Java “线程中的异常”;“主要”;

Java “线程中的异常”;“主要”;,java,arrays,indexoutofboundsexception,Java,Arrays,Indexoutofboundsexception,我不知道为什么我的界限不正确,为什么会抛出这个错误 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常 我想这是因为我的循环不正确。我一直没能找到解决办法,在谷歌上搜索了三天大约一个小时 这不是所有的代码,但这是我认为是摆脱它的一部分。提前感谢您对错误的任何帮助。如果你需要完整的代码,请告诉我 编辑: 没关系,我想出来了 我必须在数组的初始声明中添加1 在这种情况下,这意味着改变 clearPath2D = new int[gridSize]

我不知道为什么我的界限不正确,为什么会抛出这个错误

线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常

我想这是因为我的循环不正确。我一直没能找到解决办法,在谷歌上搜索了三天大约一个小时

这不是所有的代码,但这是我认为是摆脱它的一部分。提前感谢您对错误的任何帮助。如果你需要完整的代码,请告诉我

编辑: 没关系,我想出来了

我必须在数组的初始声明中添加1

在这种情况下,这意味着改变

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;
    }