【问题标题】:Is there a way to break out of a while loop before the original condition is made false?有没有办法在原始条件变为假之前打破while循环?
【发布时间】:2011-02-08 14:52:00
【问题描述】:

有没有办法在原始条件变为假之前跳出 while 循环?

例如,如果我有:

while (a==true) 
{ 
    doSomething() ; 
    if (d==false) get out of loop ;
    doSomething_that_i_don't_want_done_if_d_is_false_but_do_if_a_and_d_are_true() ;
} 

有没有办法做到这一点?

【问题讨论】:

  • 我喜欢这个问题有 5 个字的答案......我怎样才能“打破”这个循环? :)
  • 另外 - 你可以只使用 while (a) 而不是使用 while (a==true)。对于 if,您可以使用 if (!d)。
  • 问一个自我回答的问题,你会得到一个自我提问的答案。

标签: java while-loop


【解决方案1】:
while ( doSomething() && doSomethingElse() );

更改方法的返回签名,例如 d==doSomething()a==doSomethingElse()。如果您的循环逃脱了,它们一定已经产生了副作用。

如果您需要对是否启动循环进行初始测试,您可以在前面扔一个if

【讨论】:

    【解决方案2】:

    break 是您要查找的命令。

    并且不要与布尔常量进行比较 - 它实际上只是模糊了您的意思。这是另一个版本:

    while (a) 
    { 
        doSomething(); 
        if (!d)
            break;
        doSomething_that_i_don't_want_done_if_d_is_false_but_do_if_a_and_d_are_true();
    } 
    

    【讨论】:

      【解决方案3】:

      执行以下操作 请注意大括号的包含 - 这是良好的编程习惯

      while (a==true) 
      { 
          doSomething() ; 
          if (d==false) { break ; }
          else { /* Do something else */ }
      } 
      

      【讨论】:

        【解决方案4】:
        while(a)
        {
            doSomething();
            if(!d)
            {
                break;
            }
        }
        

        【讨论】:

          【解决方案5】:

          使用break statement

          if (!d) break;
          

          请注意,您无需在布尔表达式中与 truefalse 进行比较。

          【讨论】:

          • @Matt:为此,我宁愿将变量名重命名为更敏感的名称 :)
          【解决方案6】:

          【讨论】:

            【解决方案7】:

            试试这个:

            if(d==false) break;
            

            这称为“无标签”break 语句,其目的是终止whilefordo-while 循环。

            Reference here.

            【讨论】:

            • 你不应该提倡使用== false(和== true!= false!= true)。
            【解决方案8】:

            是的,使用break 语句。

            while (a==true) 
            { 
                doSomething() ; 
                if (d==false) break;
                doSomething_that_i_don't_want_done_if_d_is_false_but_do_if_a_and_d_are_true() ;
            } 
            

            【讨论】:

              猜你喜欢
              • 2020-03-10
              • 1970-01-01
              • 1970-01-01
              • 2011-06-04
              • 2019-10-26
              • 2014-03-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多