首页 > 代码库 > 【Stackoverflow好问题】从一个多层嵌套循环中直接退出

【Stackoverflow好问题】从一个多层嵌套循环中直接退出

问题
Java中如何从一个多层嵌套循环中退出,例如下面,有两个循环,break只能退出一个for循环,不能直接跳过第二个for循环
for (Type type : types) {
    for (Type t : types2) {
         if (some condition) {
             // Do something and break...
             break; // 这样只退出了最里的for循环
         }
    }}




精华回答
可以用brea+label的语法,例子如下
public class Test {
  public static void main(String[] args) {
    outerloop:
    for (int i=0; i < 5; i++) {
      for (int j=0; j < 5; j++) {
        if (i * j > 6) {
          System.out.println("Breaking");
          break outerloop;
        }
        System.out.println(i + " " + j);
      }
    }
    System.out.println("Done");
  }
}

首先在for循环前加标签,如例子中的outerloop,然后在for循环内break label(如本例的outerloop),就会跳出该label指定的for循环。


stackoverflow链接:
http://stackoverflow.com/questions/886955/breaking-out-of-nested-loops-in-java


专栏介绍:
非常喜欢stackoverflow,总能在上面找到疑难杂症的解决办法。偶然发现该网站有一个热度榜单。于是精选了热度较高的一些问题,然后按照自己的理解,把大家的讨论梳理出来。因此,这些文章不是真正的翻译,而是按照自己的理解做了一些增删、润色,希望能把上面的讨论,更精简有效地分享给大家。
如需转载,请注明原文地址
http://blog.csdn.net/lizeyang



【Stackoverflow好问题】从一个多层嵌套循环中直接退出