Java “线程中的异常”;“主要”;
我不知道为什么我的界限不正确,为什么会抛出这个错误 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常 我想这是因为我的循环不正确。我一直没能找到解决办法,在谷歌上搜索了三天大约一个小时 这不是所有的代码,但这是我认为是摆脱它的一部分。提前感谢您对错误的任何帮助。如果你需要完整的代码,请告诉我 编辑: 没关系,我想出来了 我必须在数组的初始声明中添加1 在这种情况下,这意味着改变Java “线程中的异常”;“主要”;,java,arrays,indexoutofboundsexception,Java,Arrays,Indexoutofboundsexception,我不知道为什么我的界限不正确,为什么会抛出这个错误 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常 我想这是因为我的循环不正确。我一直没能找到解决办法,在谷歌上搜索了三天大约一个小时 这不是所有的代码,但这是我认为是摆脱它的一部分。提前感谢您对错误的任何帮助。如果你需要完整的代码,请告诉我 编辑: 没关系,我想出来了 我必须在数组的初始声明中添加1 在这种情况下,这意味着改变 clearPath2D = new int[gridSize]
clearPath2D = new int[gridSize][gridSize];
到
您的直接问题在代码的这一部分:
if (currentStep.x == gridSize) {
rightReached = 1;
random = 1;
}
if (currentStep.y == gridSize) {
bottomReached = 1;
random = 0;
}
您应该针对gridSize-1
进行测试,因为这是最大有效索引。例如:
if (currentStep.x == gridSize-1) {
rightReached = 1;
random = 1;
}
if (currentStep.y == gridSize-1) {
bottomReached = 1;
random = 0;
}
自己调试代码。在
clearPath2D[right][down]=4行之前,向控制台输出值right
,clearPath2D.length
,down
和clearPath2D[right].length
。您的right和down值应始终小于数组的长度代码>做?可能重复的我没有调试它我认为数组太小,因为索引。我可以看到你的副本吗?谢谢你的回复!我想出了另一种方法,但我确信这种方法也会奏效
clearPath2D = new int[gridSize + 1][gridSize + 1];
if (currentStep.x == gridSize) {
rightReached = 1;
random = 1;
}
if (currentStep.y == gridSize) {
bottomReached = 1;
random = 0;
}
if (currentStep.x == gridSize-1) {
rightReached = 1;
random = 1;
}
if (currentStep.y == gridSize-1) {
bottomReached = 1;
random = 0;
}