bal*_*ora 0 java for-loop terminate
我无法理解为什么Java中的循环不会终止.
long i = 26L ;
long j = 24L ;
for (long x = 0L ; x < 1000L ; x++) {
i = i / 12 + 23 * (--x ) ;
j = (x--) + j + 5 ;
}
Run Code Online (Sandbox Code Playgroud)
在循环的每次迭代中,您将计数器递减x 两次.这实际上意味着循环的上限永远不会被击中.实际上,即使在第一次迭代之后,计数器也应该变为负数.
这是你可能打算做的:
for (long x = 0L ; x < 1000L ; x++) {
long xTemp = x;
i = i / 12 + 23 * (--xTemp ) ;
j = (--xTemp) + j + 5 ;
}
Run Code Online (Sandbox Code Playgroud)
或者可能这样:
for (long x = 0L ; x < 1000L ; x++) {
i = i / 12 + 23 * (x-1L) ;
j = (x-1L) + j + 5 ;
}
Run Code Online (Sandbox Code Playgroud)
一般来说,如果你指定x为for循环计数器,那么你不应该在循环中乱搞它作为一个好的做法.你可以在循环中使用它的值,但让循环本身来管理它.
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |