while循环何时停止?例如:
int a = 0;
int b = 1;
int c = 2;
int d = 1;
boolean destroyTheEarth = false;
while (a == 0) {
if (b == 1){
if (c == 1){
a = 0;
}else{
a = 1;
}
}else{
d = 0;
}
if (d == 0){
destroyTheEarth = true;
}else{
destroyTheEarth = false;
}
}
在此代码中是否会破坏地球,或者在a设置为1时环路是否会退出?我试图四处寻找,但我找到的每一个例子都不是这样,所以我不确定。因此,我想我要确定。
答案 0 :(得分:0)
第一个if
语句(b==0)
中的条件为真,因此永远不会将else
0分配给d
。因此,当您转到下一个if
语句并检查d==0
时,您知道它是错误的。这意味着将执行上一个else
中包含的代码,并将false分配给destroyEarth
。
答案 1 :(得分:0)
在正常情况下,while
循环会停止:
while
条件为false
,或者break
语句在正文中执行(只要break
不在另一个嵌套在这个循环中的循环体内......)一旦做出执行循环体的决定,身体就会完整地执行。只有这样,while
语句才会再次评估其条件并决定是否再次执行循环。
如果要在循环条件不再为真时阻止身体的一部分执行,则必须将代码放入正文中才能执行此操作。
在你的例子中,地球的命运在循环周围的每次行程中均衡。仅仅将a = 1
设置在最终循环的最后一次迭代中间并不会神奇地停止循环 - 除非你自己编程那个魔法。你有几个选择。
1)保护最后命运if
与另一个if
,只允许它在循环条件仍为真时执行:
while (a==0){
...
if (a==0) { is 'while' condition still true?
if (d == 0){
destroyTheEarth = true;
}else{
destroyTheEarth = false;
}
}
}
2)在设置break
后立即添加a = 1
语句以立即结束循环:
while (a == 0) {
if (b == 1){
if (c == 1){
a = 0;
}else{
a = 1;
break;
}
}
...
}