java - 使用 for 循环迭代二维数组

标签 java arrays for-loop multidimensional-array

我正在尝试编写一个循环来迭代二维数组并对每个子数组求和。

到目前为止我的代码如下:

int[][] data = { { 10, 20 }, { 20, 10 }, { 50, 60 }, { 45, 20 }, { 10, 35 }, { 25, 16 } };
int[] sumOfArrays = new int[5];

    for (int[] i : data) {
        int sum = 0;
        for (int x : i) {
            sum =+ x;
        }
        sumOfArrays[i] = sum;
    }

    System.out.println(sumOfArrays);

由于类型不匹配,这是不可能的:(i) int[] - int

我该如何解决这个问题?

最佳答案

这里有一些问题。让我们从对你影响最深的一个开始。

for (int[] i : data) {
    int sum = 0;
    for (int x : i) {
        sum =+ x;
    }
    sumOfArrays[i] = sum;
}

在这些嵌套循环的上下文中,i 引用 int[] 引用,因此您不能使用它来索引任何内容。

一般来说,在处理 foreach 循环时,通常会失去对它们进行索引的能力,因此在尝试这样做时应小心谨慎。

为此,您必须引入一个新变量。另外一定要翻转你的作业;您需要 += 而不是 =+,因为前者只是分配给有保证的正值。

int idx = 0;
for (int[] i : data) {
    int sum = 0;
    for (int x : i) {
        sum += x;
    }
    sumOfArrays[idx++] = sum;
}

接下来,您的数组有一个元素太短 - 您有六行,但只为 5 行分配了空间。修复该大小,然后上面的代码就可以正常工作。

关于java - 使用 for 循环迭代二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33264223/

相关文章:

c - for 循环不读取我的 if 语句

java - 如何在 Mesh RestClient 中发送 Json 对象请求并接收节点响应?

Java 日历,行为不同 OSX Windows

arrays - 查找比数组中给定的数字更大的数字

c# - 数组索引与指针算术性能

android - 从 StringArray 创建按钮并设置 onClickListener

r - 如何使用 For 循环 R 创建、命名和填充新列

java - EditText getText 返回空

java - LibGDX:艺术 Assets 无法加载依赖项,因为访问被拒绝

java - 数组堆栈、链接堆栈和堆栈之间有什么区别