什么时候一个while循环停止在java?

时间:2017-11-20 04:33:58

标签: java loops

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时环路是否会退出?我试图四处寻找,但我找到的每一个例子都不是这样,所以我不确定。因此,我想我要确定。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

在正常情况下,while循环会停止:

  1. 执行正文之前,while条件为false,或者
  2. break语句在正文中执行(只要break不在另一个嵌套在这个循环中的循环体内......)
  3. 一旦做出执行循环体的决定,身体就会完整地执行。只有这样,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;
           }
       }
       ...
    }