所以在这一点上我不知道为什么我的for
循环不起作用。这可能只是一个小错误,但我找不到,所以我很感激你的帮助。这就是它的样子:
int[] values = new int[array1.length];
for (int i = 0; i < array1.length; i++) {
for (int x = 0; x >= array1[i][0] && x <= array1[i][2]; x++) {
for (int y = 0; y >= array1[i][1] && y <= array1[i][3]; y++) {
values[i] += array2[x][y];
}
}
}
用于测试它的数字和某些上下文:
两个阵列都是2D,
array1
看起来像这样:
(array1.length
= 8
)和array2
是这样的:
array1
保存array2
区域左上角和右下角的坐标,例如0 0 2 1
是array2[0][0]
和array2[2][1]
的坐标我试图让我的for
循环添加该区域中的所有数字。因此,对于此示例,它将添加这四个数字:
我的输出是:3 0 0 0 0 0 0 0
答案 0 :(得分:1)
我认为你应该这样做(添加&lt; =和&gt; =)并更改statring值。同时考虑用“零”填充“值”,因为你总结了它。
for (int x = array1[i][0]; x >= array1[i][0] && x =< array1[i][2]; x++) {
for (int y = array1[i][1]; y >= array1[i][1] && y =< array1[i][3]; y++) {
values[i] += array2[x][y];
}
}
答案 1 :(得分:1)
您应该使用显式变量名来不要在意义上做错误。 此外,在预期的坐标处开始循环。所以你的循环可以这样写:
int[] values = new int[array1.length];
for (int i = 0; i < values.length; i++) {
int fromX = array1[i][0];
int fromY = array1[i][1];
int toX = array1[i][2];
int toY = array1[i][3];
for (int x = fromX; x <= toX; x++) {
for (int y = fromY; y <= toY; y++) {
values[i] += array2[x][y];
}
}
}
您可以查看结果:
System.out.println( Arrays.toString( values) );
// Output is [3, 0, 4, -2, 0, 1, -2, 3]