检查索引是否为2D数组中的OutOfBounds

时间:2016-11-10 15:03:57

标签: java multidimensional-array indexoutofboundsexception traversal

所以我在java中构建了一种“生命游戏”应用程序,并且在检测索引何时超出限制时遇到一些问题。下面的代码是来自SO的另一个qustion的修改版本。

2D数组:

1,1,1,1
1,1,1,1
1,1,1,1
1,1,1,1

代码

private void traverse() {       
        for (int i = 0; i < brickArray.length; i++) {
            for (int j = 0; j < brickArray[i].length; j++) {

                System.out.println(i - 1 + "," + j);
                checkIfAllowed(i - 1, j);

            }
        }   
    }

    public void checkIfAllowed(int row, int column) {
    boolean incorrect = check(row) && check(column);
    if (incorrect) {
        System.out.println("Wall");
    } else {
        System.out.println("Road");

    }
}

private boolean check(int index) {
    return (index < 0 || index > board.getHeight());
}

结果:

遍历:

-1,0
Road
-1,1
Road
-1,2
Road
-1,3
Road
0,0
Road
0,1
Road
0,2
Road
0,3
Road
1,0
Road
1,1
Road
1,2
Road
1,3
Road
2,0
Road
2,1
Road
2,2
Road
2,3
Road

在这个例子中,4个顶部单元格应该打印“Wall”,但它们没有。

1 个答案:

答案 0 :(得分:0)

否定姓名和中立名称(check)的陷阱。

boolean incorrect = check(row) || check(column);

当行或列不正确时,整个坐标都不正确。

我会在这里写check,因为现在董事会必须使用getHeight进行检查。