我有一个 3x3 整数数组(0 或 1):int[][] 矩阵
。目标是通过假设 0 是墙壁来穿过 0 和 1 的迷宫(矩阵)。我不知道如何去检查邻居。
例如,从 [0][0]
开始并检查其上方,我需要执行以下操作:
if (currentPosition.getColumn()-1 != null && !checkIfWall[getRow()][getColumn()-1]) {
//做东西
}
其中 checkIfWall 是墙壁或非墙壁的 boolean 二维数组。问题是,如果任何值为 -1,checkIfWall
将返回 ArrayOutOfBounds。另外,我还必须编写另外三个 if 语句来检查下面、左边和右边,这看起来很乏味。有更好的方法吗?
最佳答案
我的做法是假设数组外部的任何位置都是墙 - 所以你可以创建一个函数来进行碰撞测试并检查其内部的边界。
boolean isWall(int x, int y) {
if (x<0||x>3)
return true;
if (y<0||y>3)
return true;
return data[x][y]==0;
}
现在你可以调用 isWall 来获取你喜欢的任何坐标,它永远不会出错,所以你不需要担心你在所有其他算法中的位置 - 迷宫之外的任何东西总是被视为墙。
关于java - 检查 ArrayIndexOutOfBounds Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20589530/