【发布时间】:2012-07-29 23:09:19
【问题描述】:
为什么这段代码不运行?
for(int i=0;i<11;i++){
for(int j=0;j<11;j++){
if(i>0){
if((staticWallLoc[i--][j]&4)>0){staticWallLoc[i][j]=staticWallLoc[i][j]|1;}
}
if(j<10){
if((staticWallLoc[i][j++]&8)>0){staticWallLoc[i][j]=staticWallLoc[i][j]|2;}
}
if(i<10){
if((staticWallLoc[i++][j]&1)>0){staticWallLoc[i][j]=staticWallLoc[i][j]|4;}
}
if(j>0){
if((staticWallLoc[i][j--]&2)>0){staticWallLoc[i][j]=staticWallLoc[i][j]|8;}
}
System.out.println(i+" "+j);
}
}
顺便说一下,staticWallLoc[11][11] 是一个二维数组,每个维度 (0-10) 有 11 个索引。
只是想知道为什么我的程序实际上无法通过此代码。
【问题讨论】:
-
每次看到这样的问题我都感到困惑。您是否尝试过使用调试器??
-
那些循环索引的增量和减量是可怕的!只需使用 i-1 和 i+1 等作为索引。
-
@John3136 我想你刚刚回答了这个问题;)
-
看看at this thread 为什么不应该使用 i-- & i++ 索引。
-
它确实运行。它永远不会终止,因为你是这样写的。
标签: java arrays for-loop binary logical-operators