zoukankan      html  css  js  c++  java
  • Java跳出多重循环的方法

      我们一般用break和cuntinue来控制单个循环,但是如果遇到有多个循环的情况呢,比如下面这个:

    for (int i=0; i<10; i++) {
                for (int j=0; j<10; j++) {
                    for (int k=0; k<10; k++) {
                        
                      }
                }
            }

      如果有以下需求一般怎么做呢?

       (1)当j+k > 5时结束所有循环;

      (2)当j+k > 5时结束最里两层循环;

      (3)当j+k > 5时结束最里一层循环,跳过当前第二层循环,但继续执行剩下的第二层循环;

    1、 抛异常来跳出整个循环;

      比如说当j+k > 5时结束所有循环可使用此法:

    try{
                for (int i=0; i<10; i++) {
                    for (int j=0; j<10; j++) {
                        for (int k=0; k<10; k++) {
                            if (j + k > 5){
                                throw new Exception();
                            }
                        }
                    }
                }
            }
    catch (Exception e) {    }

    2、 使用条件标识符来控制循环

    比如说当j+k > 5时结束最里两层循环,第一种方法就无法做到了,可使用此法:

            boolean firstLoop = true;
            boolean secondLoop = true;
            boolean thirdLoop = true;
            
            for (int i=0; i<10; i++) {
                if (!firstLoop){
                    break;
                }
                
                for (int j=0; j<10; j++) {
                    if (!secondLoop){
                        break;
                    }
                    
                    for (int k=0; k<10; k++) {
                        if (!thirdLoop){
                            break;
                        }
                        if (j + k > 5){
                            thirdLoop = false;
                            secondLoop = false;
                        }
                    }
                }
            }
        

    3、 给循环添加标记,来更精准的控制循环

    比如说当j+k > 5时结束最里一层循环,跳过当前第二层循环,但继续执行剩下的第二层循环;这个使用第二种方法也能实现,只是代码可能就会看起来更加的复杂;使用第三种方法就能让这个变得简单明了,代码如下(secondLoop就是一个标记):

    for (int i=0; i<10; i++) {
                secondLoop:
                for (int j=0; j<10; j++) {
                    for (int k=0; k<10; k++) {
                        if (j + k > 5){
                            continue secondLoop;
                        }
                    }
                }
            }
  • 相关阅读:
    AJAX 弹出窗消息类
    正则表达式验证总结
    Coolite 三列布局演示
    Coolite: Button、TextField、DataField、ComBox
    页面返回
    Coolite GridPanel 操作之一:获取gridpanel 选中行的记录信息
    页面上Enter 键禁用
    new、abstract、virtual、override,sealed关键字区别和使用代码示例
    Coolite TreePanel 操作之一:TreePanel 刷新
    调用WCF出现 The remote server returned an error: (401) Unauthorized. 错误
  • 原文地址:https://www.cnblogs.com/aland-1415/p/11062364.html
Copyright © 2011-2022 走看看