java - 将数组操作为新数组

标签 java arrays variables methods

我正在尝试编写一个方法,该方法接受一个数组,并将相邻单元格添加在一起以生成一个新数组。用例子更容易解释:

{11, 4, 3, 18, 23, 9} --> {15, 21, 32}

{5, 5, 21, 13, 1} --> {10, 34}(第六个单元格被忽略)

public static int[] collapse(int[] a) {
    int[] b = new int[a.length / 2];
    for (int j = 0 ; j < (a.length - 1) ; j+2) {    //goes thru original array
        for (int i = 0 ; i < b.length ; i++) {      //populates new array
            b[i] = a[j] + a[j+1];
        }
    }
    return b;
}

我认为这需要使用嵌套的 for 循环,第一个循环遍历原始数组,第二个循环填充新数组。我知道第一个 for 循环中的 j+2 在语法上是不正确的,但我无法找出另一种方法来实现相同的想法。

最佳答案

问题#1:for 中的第三个表达式通常需要修改索引。 j+2 本身并不能做到这一点; j = j + 2 会。 (或j += 2。)

问题#2:您不需要嵌套的 for 循环。其作用是:首先将 j 设置为 0,然后让 i 遍历整个 b 数组。然后它递增 j (在解决第一个问题之后)并让 i 再次遍历整个 b 数组。这不是你想要的;您希望它们并行增加。

一种方法是将 i 声明为循环外的变量:

int i = 0;
for (int j = 0; j < a.length - 1; j += 2) {
     b[i++] = a[j] + a[j + 1];
}

确保循环体递增i。或者,您可以变得更奇特:

for (int i = 0, j = 0; j < a.length - 1; i++, j += 2) {
    b[i] = a[j] + a[j + 1];
}

并让 for 增加两个索引。

关于java - 将数组操作为新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22850690/

相关文章:

java - 将 TestNG dataProvider 与 dependentOnGroups 结合使用来设置执行顺序

arrays - MATLAB:如何向量乘两个矩阵数组?

javascript - 如何根据 JavaScript 中的另一个数组比较和更新此数组?

php - POST 变量数组和 filter_input

arrays - SAS如何使用ARRAY更改变量(列)位置(值也)

url - CodeIgniter:通过 URL 传递变量 - 使用 GET 的替代方法

java - 如何使用特定注释将自定义序列化器设置为任意 API 端点(spring 应用程序)?

java - IntelliJ iDEA 中有快速搜索工具吗?

windows - 批处理字符串操作中的进度条

java - 捕获并记录响应正文