我正在尝试编写一个循环来迭代二维数组并对每个子数组求和。
到目前为止我的代码如下:
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/