Java While循环

3

在 while 循环中,是否有可能在中途返回到循环的开头?

就像这样:

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

澄清一下:我所说的重新开始并不是指重置变量,而是指在停止执行后进入下一次迭代的意义上重新开始。


1
continue; 不就是做这个吗? - Mike Christensen
2
“重新启动”是什么意思,重置所有变量吗? - Andy
3个回答

9
< p >"continue" 关键字可以实现该功能。< /p >
while(this is true)
 {
      do stuff...
      if(this is true)
        {
            continue;
        }
  }

基本上,continue会立即停止循环的执行,然后继续进行下一次循环迭代。你也可以在其他循环中使用,比如for循环。


太棒了,正是我在寻找的。 - James Fazio

1

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

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


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


-2

[编辑] 误解了问题!如果您想重新启动循环,则可以使用此方法。

有许多方法可以实现。您可以将while循环放在一个函数中并调用该函数。例如:

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

由于无限循环,如果您从未更改任何输入,则loop()将不断调用自身,您将被锁定在无限循环中。 - Matt Westlake
这将导致在任何可能的语言中出现StackOverflowError(或类似错误)。 - Luiggi Mendoza
@EricSauer 我没有亲自点踩,因为你确实回答了提问者所问的问题(如果你字面理解的话),但我能理解为什么其他人会点踩。你可能没有回答提问者想表达的意思。 - Sam I am says Reinstate Monica
不,它并不能保证是堆栈溢出(但堆栈溢出的风险确实很高)。do stuff... 可能会导致 this 不为 true,从而不会无限递归。 - Sam I am says Reinstate Monica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接