java - 检查 ArrayIndexOutOfBounds Java

标签 java multidimensional-array indexoutofboundsexception

我有一个 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/

相关文章:

java - 如何实现服务器端分页结果不可预测

java - Hibernate反序列化问题

java - Android,获取InputStream考虑重定向

java - 在Java中导入ascii世界地图

C:二维数组是如何工作的?

Java 矩阵乘法 ArrayIndexOutOfBounds 异常

java - 在 For 循环中的数组中使用 Length() 方法时出错

java - Google App Engine 中水印中的图像 (Java)

JavaScript : Pass-by-reference issues when creating an unknown dimension multi dimensional array function

java - 列表 : set method causing problems - IndexOutOfBoundsException