【问题标题】:Java While LoopJava While 循环
【发布时间】:2012-07-12 17:32:42
【问题描述】:

是否可以在while循环中间,返回到循环的开头?

类似的东西

 while(this is true)
 {
      do stuff...
      if(this is true)
        {
            restart while loop;
        }
  }

澄清一下:我的意思不是像重置变量那样重新启动,我的意思是停止执行并继续下一次迭代的重新启动。

【问题讨论】:

  • continue; 不会那样做吗?
  • “重启”是什么意思,重置所有变量?

标签: java while-loop


【解决方案1】:

continue 关键字可以做到这一点

while(this is true)
 {
      do stuff...
      if(this is true)
        {
            continue;
        }
  }

基本上,continue 会立即停止循环的执行,然后继续循环的下一次迭代。您也可以使用其他循环来执行此操作,例如 for 循环。

【讨论】:

  • 太棒了,正是我想要的。
【解决方案2】:

是的,这是可能的。 Java 为循环或语句块提供标签,并且它必须位于语句之前。 语法是identifier:

START: while(this is true)
 {
      do stuff...
      if(this is true)
        {
            continue START;
        }
  }


有很多方法可以做到这一点,但我认为这是最简单的方法。

【讨论】:

    【解决方案3】:

    [编辑] 误解了这个问题!如果您想重新启动循环,这将有效。

    有很多方法可以做到这一点。您可以在函数中使用 while 循环并调用该函数。如:

    public static void loop(){
           while(this is true)  {
                  do stuff...
                  if(this is true) {
                       loop();
                       break; <-- dont forget this!
                  }
           } 
    }
    

    【讨论】:

    • 因为无限循环如果你从不改变任何输入 loop() 只会继续调用它自己,你会被锁定在一个无限循环中。
    • 这将导致任何可能的语言出现 StackOverflowError(或类似错误)。
    • @EricSauer 我个人没有投反对票,因为你确实回答了 OP 提出的问题(如果你从字面上理解的话),但我可以理解为什么其他人会投反对票。您可能没有回答 OP 的意思
    • 不,不保证是堆栈溢出,(但 SO 的风险确实可能很高)do stuff... 可能导致 this 不是 true,因此不会无限重复.
    猜你喜欢
    • 2018-07-07
    • 2011-01-20
    • 1970-01-01
    • 2022-09-24
    • 2010-11-26
    • 2014-03-29
    • 2021-03-27
    • 2020-11-26
    相关资源
    最近更新 更多