薛定谔不养猫 2024-03-21 16:33 采纳率: 30.8%
浏览 17

C#一个数组元素按照另一个数组个数和元素进行分割

下面有三个数组count,nums,dataX:

    int[] count = { 7, 7, 8, 7, 8 };
    int[] nums = { 1, 2, 3, 4, 5, 6, 7,
                           8, 9, 10, 11, 12, 13, 14,
                           15, 16, 17, 18, 19, 20, 21, 22,
                           23, 24, 25, 26, 27, 28, 29,
                           30, 31, 32, 33, 34, 35, 36, 37 };
 double[] dataX = { 177.913, 255.971, 333.692, 411.355, 489.050, 644.143, 721.401,
                               178.549, 334.009, 411.455, 489.294, 566.739, 644.123, 721.374,
                               179.099, 256.591, 334.402, 411.610, 489.459, 566.774, 644.050, 721.051,
                               179.629, 257.088, 334.524, 412.156, 566.736, 643.818, 720.929,
                               180.370, 257.899, 335.304, 412.456, 489.839, 566.349, 643.582, 720.607 };            

如何将dataX和nums中的元素根据按照count中的元素进行分割,分别分割成5个(即count的长度)子数组,每个子数组中的元素个数和对应count中的元素值相同?如下图所示:

            int[] nums1 = { 1, 2, 3, 4, 5, 6, 7 };
            int[] nums2 = { 8, 9, 10, 11, 12, 13, 14 };
            int[] nums3 = { 15, 16, 17, 18, 19, 20, 21, 22 };
            int[] nums4 = { 23, 24, 25, 26, 27, 28, 29 };
            int[] nums5 = { 30, 31, 32, 33, 34, 35, 36, 37 };
            double[] X1 = { 177.913, 255.971, 333.692, 411.355, 489.050, 644.143, 721.401 };
            double[] X2 = { 178.549, 334.009, 411.455, 489.294, 566.739, 644.123, 721.374 };
            double[] X3 = { 179.099, 256.591, 334.402, 411.610, 489.459, 566.774, 644.050, 721.051 };
            double[] X4 = { 179.629, 257.088, 334.524, 412.156, 566.736, 643.818, 720.929 };
            double[] X5 = { 180.370, 257.899, 335.304, 412.456, 489.839, 566.349, 643.582, 720.607 };
  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-21 16:34
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    思路:
    1. 首先将count中的元素进行累加得到总数total。
    2. 然后根据得到的total将nums和dataX中的元素分割成total个数的一维数组。
    3. 最后将一维数组中的元素按照count中的值进行分割,得到所需的五个子数组。 代码实现:
    int[] count = {7, 7, 8, 7, 8};
    int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37};
    double[] dataX = {177.913, 255.971, 333.692, 411.355, 489.050, 644.143, 721.401, 178.549, 334.009, 411.455, 489.294, 566.739, 644.123, 721.374, 179.099, 256.591, 334.402, 411.610, 489.459, 566.774, 644.050, 721.051, 179.629, 257.088, 334.524, 412.156, 566.736, 643.818, 720.929, 180.370, 257.899, 335.304, 412.456, 489.839, 566.349, 643.582, 720.607};
    int total = 0;
    for (int i = 0; i < count.length; i++) {
        total += count[i];
    }
    int[] nums1 = new int[count[0]];
    int[] nums2 = new int[count[1]];
    int[] nums3 = new int[count[2]];
    int[] nums4 = new int[count[3]];
    int[] nums5 = new int[count[4]];
    double[] X1 = new double[count[0]];
    double[] X2 = new double[count[1]];
    double[] X3 = new double[count[2]];
    double[] X4 = new double[count[3]];
    double[] X5 = new double[count[4]];
    int index1 = 0;
    int index2 = 0;
    int index3 = 0;
    int index4 = 0;
    int index5 = 0;
    for (int i = 0; i < total; i++) {
        if (i < count[0]) {
            nums1[i] = nums[i];
            X1[i] = dataX[i];
        } else if (i < count[0] + count[1]) {
            nums2[index1] = nums[i];
            X2[index1] = dataX[i];
            index1++;
        } else if (i < count[0] + count[1] + count[2]) {
            nums3[index2] = nums[i];
            X3[index2] = dataX[i];
            index2++;
        } else if (i < count[0] + count[1] + count[2] + count[3]) {
            nums4[index3] = nums[i];
            X4[index3] = dataX[i];
            index3++;
        } else {
            nums5[index4] = nums[i];
            X5[index4] = dataX[i];
            index4++;
        }
    }
    System.out.println(Arrays.toString(nums1));
    System.out.println(Arrays.toString(nums2));
    System.out.println(Arrays.toString(nums3));
    System.out.println(Arrays.toString(nums4));
    System.out.println(Arrays.toString(nums5));
    System.out.println(Arrays.toString(X1));
    System.out.println(Arrays.toString(X2));
    System.out.println(Arrays.toString(X3));
    System.out.println(Arrays.toString(X4));
    System.out.println(Arrays.toString(X5));
    

    输出结果:

    [1, 2, 3, 4, 5, 6, 7]
    [8, 9, 10, 11, 12, 13, 14]
    [15, 16, 17, 18, 19, 20, 21, 22]
    [23, 24, 25, 26, 27, 28, 29]
    [30, 31, 32, 33, 34, 35, 36, 37]
    [177.913, 255.971, 333.692, 411.355, 489.05, 644.143, 721.401]
    [178.549, 334.009, 411.455, 489.294, 566.739, 644.123, 721.374]
    [179.099, 256.591, 334.402, 411.61, 489.459, 566.774, 644.05, 721.051]
    [179.629, 257.088, 334.524, 412.156, 566.736, 643.818, 720.929]
    [180.37, 257.899, 335.304, 412.456, 489.839, 566.349, 643.582, 720.607]
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月21日

悬赏问题

  • ¥100 有偿,谁有移远的EC200S固件和最新的Qflsh工具。
  • ¥15 找一个QT页面+目标识别(行人检测)的开源项目
  • ¥15 有没有整苹果智能分拣线上图像数据
  • ¥20 有没有人会这个东西的
  • ¥15 cfx考虑调整“enforce system memory limit”参数的设置
  • ¥30 航迹分离,航迹增强,误差分析
  • ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败
  • ¥15 用Ros中的Topic通讯方式控制小乌龟的速度,走矩形;编写订阅器代码
  • ¥15 LLM accuracy检测
  • ¥15 pycharm添加远程解释器报错