在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
突破内部循环,但仍然在外部循环