java中while循环究竟什么时候停止



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的那一刻退出?我试着四处搜索,但我发现的每个例子都不是这样的,所以我不确定。正因为如此,我想我会要求确定。

第一个if语句(b==0)中的条件为true,因此else永远不会将0赋值给d。因此,当您转到下一个if语句并检查d==0时,您就知道它是false。这意味着最后一个else中包含的代码将被执行,而false将被分配给destroyEarth

在正常情况下,while循环在以下情况之一时停止:

  1. 在执行主体之前,while条件为false,OR
  2. break语句在主体中执行(只要break不在嵌套在该循环中的另一个循环的主体中…)

一旦决定执行循环主体,主体将整体执行。只有到那时,while语句才会再次评估其条件,并决定是否下次执行循环。

如果您想在循环条件不再为true时阻止部分主体执行,则必须在主体中放入代码才能执行。

那么,在你的例子中,地球的命运在每一次绕环旅行中都悬而未决。仅仅将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) 在设置a = 1之后立即添加break语句以立即结束循环:

while (a == 0) {
if (b == 1){
if (c == 1){
a = 0;
}else{
a = 1;
break;
}
}
...
}

最新更新