我有这个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逻辑运算符确实会短路,因此问题很可能出在其他变量上,具体取决于它们在循环中的变化方式。