【发布时间】:2020-03-20 17:22:32
【问题描述】:
for(int i = q.length-1; i >= 0; i--){
if(q[i] != i+1){
try{
if(((i-1)>=0) & (q[i-1] == (i+1))){
steps++;
q[i-1] = q[i];
q[i] = i+1;
System.out.println("here "+i);
}
if(((i-2) >=0) & (q[i-2] == (i+1))){
q[i-2] = q[i-1];
q[i-1] = q[i];
q[i] = i+1;
steps += 2;
}else{
System.out.println("Too chaotic");
return;
}
}catch(Exception e){
System.out.println("error at the " +i + " exception" +e);
}
}
}
System.out.println(steps);
* 我得到的最后一个值是 1。我试图在 if 条件下打印 i,它正在将 i 值打印为 1,直到最后一行。现在,我不明白异常发生在哪里? *
【问题讨论】:
-
堆栈跟踪是否没有告诉您异常所在的行?
-
你能把q有的对象放吗?
-
您使用的是按位
&。你想要逻辑&&吗? -
是的,这可能是你的错误。如果 if 语句的计算结果为 true,则意味着您将尝试在下一行访问
q[-1]。 -
非常感谢大家的回复。我是编程新手,犯了一个愚蠢的错误。 @JohnnyMopp 您的建议是正确的,一旦我将其更改为 && 错误就消失了。谢谢!
标签: java arrays indexoutofboundsexception