在Java中,break如何与嵌套循环交互?

我知道一个break语句从一个循环中跳出来,但是跳出了嵌套循环还是跳出了一个循环呢?

没有任何装饰, break会突破最内层的循环。 因此在这个代码中:

 while (true) { // A while (true) { // B break; } } 

break只会退出循环B ,所以代码将永远循环。

不过,Java有一个名为“命名rest”的function,您可以在其中命名循环,然后指定要跳出哪一个循环。 例如:

 A: while (true) { B: while (true) { break A; } } 

这段代码不会永远循环,因为break明确地离开了循环A

幸运的是,这个相同的逻辑continue 。 默认情况下, continue执行包含continue语句的最内层循环的下一次迭代,但也可以通过指定循环的标签继续执行来跳转到外循环迭代。

在除Java以外的其他语言(例如C和C ++)中,此“标记的中断”语句不存在,并且不容易突破多重嵌套循环。 可以使用goto语句来完成,虽然这通常是皱眉。 例如,假设你愿意忽略Dijkstra的build议并使用goto ,那么在C中嵌套的break可能是这样的:

 while (true) { while (true) { goto done; } } done: // Rest of the code here. 

希望这可以帮助!

默认情况下,它跳出最内层循环。 但是你也可以指定标签并使其跳出外层循环 。

你也可以通过使用exception来解决,所以你可以处理多种原因

  void fkt1() { try { while (true) fkt2(); } catch (YourAbortException e) { e.printStackTrace(); } //go on } void fkt2() { while (true) if (abort) throw new YourAbortException(); } 

它打破了1循环。 很简单。 例如:

 for loop for loop break; end for loop end for loop 

突破内部循环,但仍然在外部循环