我試圖解決使用二維數組的問題,這是一個迷宮中的老鼠的問題。避免在二維數組中出現異常
在檢查試圖編譯的條件時,它會發現一個數組索引越界異常......我如何檢查這些值,使其不會超出數組邊界?
static void solveMaze(){
int nSteps = 0; // Number of steps.
int x = 0; int y = 0; // Starting point.
boolean mazeCompleted = false;
while (!mazeCompleted){
if(x == maze.mazeMatrix.length && y == maze.mazeMatrix.length)
mazeCompleted = true;
else if(maze.mazeMatrix[x+1][y] == 0){ // Move right.
maze.mazeMatrix[x+1][y] = 2;
x++; nSteps++;
}
else if(maze.mazeMatrix[x-1][y] == 0){ // Move left.
maze.mazeMatrix[x-1][y] = 2;
x--; nSteps++;
}
else if(maze.mazeMatrix[x][y+1] == 0){ // Move down.
maze.mazeMatrix[x][y+1] = 2;
y++; nSteps++;
}
else if(maze.mazeMatrix[x][y-1] == 0){ // Move up.
maze.mazeMatrix[x][y-1] = 2;
y--; nSteps++;
}
}
maze.printMatrix();
System.out.println("Maze COMPLETE! - With a total of " + nSteps + " steps.");
}
以前試過用兩個「for」循環來防止出界,但我不能在這個問題上走對角線。
你可以分享堆棧跟蹤嗎? –
最簡單的方法是實際使用2 for循環。否則,您可以在增加/減少前檢查該值是否有效。例如:if(x - > 0){x--;} –
當x爲零時,您嘗試訪問x-1,作爲示例。你需要檢查x和你對零和迷宮的最大尺寸,*之前*試圖訪問一個鄰近的單元格。 –