我有这个while循环:

//All of this code is inside a for loop
positionUp = i - 1;

while ((positionUp > 0) && boardMatrix[positionUp][j] == boardMatrix[i][j]) {

    //do something

    positionUp--;
}


在某些时候,可能为positionUp分配了值-1(当i=0时)

我以为while循环将在第一次false评估时停止,因此不评估boardMatrix[positionUp][j]而不获取java.lang.ArrayIndexOutOfBoundsException: -1

我没有看到如何解决这个问题。有人可以指点我吗?

最佳答案

将您的循环(临时)更改为:

System.out.println ("pos="+positionUp+",i="+i+",j="+j);
while ((positionUp > 0) && boardMatrix[positionUp][j] == boardMatrix[i][j]) {
    positionUp--;
    System.out.println ("pos="+positionUp+",i="+i+",j="+j);
}


查看哪个变量导致了问题。 Java逻辑运算符确实会短路,因此问题很可能出在其他变量上,具体取决于它们在循环中的变化方式。

10-04 16:13