试图让我的for循环工作

时间:2016-01-09 19:23:46

标签: java arrays for-loop logic

所以在这一点上我不知道为什么我的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

array1.length = 8)和array2是这样的:

array2

array1保存array2区域左上角和右下角的坐标,例如0 0 2 1array2[0][0]array2[2][1]的坐标我试图让我的for循环添加该区域中的所有数字。因此,对于此示例,它将添加这四个数字:

enter image description here

我的输出是:3 0 0 0 0 0 0 0

2 个答案:

答案 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]