【问题标题】:How to add array values after exceeding a certain length in javajava中超过一定长度后如何添加数组值
【发布时间】:2020-09-01 09:11:59
【问题描述】:

我正在尝试找出当数组值超过一定长度时添加数组值的最佳方法。该程序将允许用户将值输入到数组中。一旦用户输入数字的数量(可以是他们想要的数量)。数字不应超过 6 列,如果超过,则应从数组的右到左添加。见下文

用户输入的12个数字:

arrNumbers = new int[] { 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6};

应该创建一个新数组,如下所示:

newArrNumbers = int [2, 4, 6, 8, 10, 12]

结果只有 6 个插槽。

我不知道如何编码。我只知道使用下面的 if 语句可以做到这一点。我是初学者,想从有经验的人那里了解解决方案。

if (arrNumbers.length > 6)

【问题讨论】:

  • 你打算如何对这些数字求和?我没有遵循您用来从 arrNumbers 转到 newArrNumbers 的逻辑。一旦你澄清了这个逻辑,我就可以实现代码了。
  • "如果他们这样做,他们应该从数组的右到左添加",你能解释一下这是什么意思吗?如果arrNumbers = new int[] { 1, 2, 3, 4, 5, 6, 1, 2, 3};,您的预期结果是什么?如果arrNumbers = new int[] { 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6,1,2,3}; 怎么办?

标签: java arrays loops


【解决方案1】:

我想你要找的是这个

int[] arrNumbers = new int[] {1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6};
int[] res = new int[6];

// iterate over the initial array and chunk it. 6 will be our chunk per requirements.
for (int i = 0; i < arrNumbers.length; i += 6) {
    // create a sub array for the first 6 numbers.
    int[] ints = Arrays.copyOfRange(arrNumbers, i, Math.min(arrNumbers.length, i + 6));
    // add the first chunk to our resulting array. Repeat until needed.
    for (int j = 0; j < ints.length; j++) {
        res[j] += ints[j];
    }
}

结果:res: {2, 4, 6, 8, 10, 12}

这适用于arrNumbers 变量的任何数组大小。

【讨论】:

    【解决方案2】:

    更简洁有效的答案:

        int[] arrNumbers = new int[] { 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6};
        int[] newArrNumbers = new int[6];
    
        for(int i  = 0; i < arrNumbers.length ; i++){
            newArrNumbers[i % 6] += arrNumbers[i];
        }
    

    输出:[2, 4, 6, 8, 10, 12]

    【讨论】:

      【解决方案3】:

      您可以轻松地遍历 Array 的其余部分。

      int sum=0;
      for(int i=6;i<arrNumbers.length;i++){
      sum+=arrNumbers[i];
      }
      arrNumbers[5]=sum;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-08
        • 1970-01-01
        • 2011-11-23
        • 1970-01-01
        • 2019-07-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多