Java跳出多重循环

场景:很多的时候需要做到跳出多重循环,而在Java中虽然后goto关键字,但是是保留字,并没有启用。而在处理分支结构的if...else,switch...case,好像都达不到想要的效果。

作为终止当前代码的return并不能完成业务需求,能用到的只有break,但是break只能跳出当前的循环。

代码示例:break

        private static void testBreak() {
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.println("testBreak==j==" + j);
                if (j == 2)
                    break;
            }
            System.out.println("testBreak==i====>>>" + i);
        }
        System.out.println("testBreak======>>>END");
    }        

结果:

testBreak==j==0
testBreak==j==1
testBreak==j==2
testBreak==i====>>>0
testBreak==j==0
testBreak==j==1
testBreak==j==2
testBreak==i====>>>1
testBreak==j==0
testBreak==j==1
testBreak==j==2
testBreak==i====>>>2
testBreak======>>>END

结论:所有的执行到 j==2 的时候都会终止但是只能跳出当前循环。

解决方案一:继续使用break,但是在添加一个flag作为判断条件,每次判断条件的时候都会判断循环和flag.

代码:

       private static void outloopByBreak() {
        boolean flag = true;
        for (int i = 0; i < 3 && flag; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.println("outloopByBreak==j==" + j);
                if (j == 2) {
                    flag = false;
                    break;
                }
            }
            System.out.println("outloopByBreak==i====>>>" + i);
        }
        System.out.println("outloopByBreak======>>>END");
    }    

结果:

outloopByBreak==j==0
outloopByBreak==j==1
outloopByBreak==j==2
outloopByBreak==i====>>>0
outloopByBreak======>>>END

结论:能解决跳出循环的问题,但是是会在内部循环的完成之后继续往下执行,知道下次判断才会跳出循环。

解决方案二:Java中break有一种用法可以做到类似goto的效果,在需要跳出的循环之前加一个标志之后break 标志;可以做到跳出循环(推荐使用)。

代码:

    private static void outloopByBreakLikeGoto() {
        flag: for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.println("outloopByBreakLikeGoto==j==" + j);
                if (j == 2) break flag;
            }
            System.out.println("outloopByBreakLikeGoto==i====>>>" + i);
        }
        System.out.println("outloopByBreakLikeGoto======>>>END");
    }

结果:

outloopByBreakLikeGoto==j==0
outloopByBreakLikeGoto==j==1
outloopByBreakLikeGoto==j==2
outloopByBreakLikeGoto======>>>END

结论:做到了类似goto的效果

解决方案三:try...catch方式也能做到跳出多重循环的效果

代码:

        private static void outloopByTryCatch() {
        try {
            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 5; j++) {
                    System.out.println("outloopByTryCatch==j==" + j);
                    if (j == 2)
                        throw new Exception();
                }
                System.out.println("outloopByTryCatch==i====>>>" + i);
            }
        } catch (Exception e) {
            System.out.println("====>>outloopByTryCatch跳出");
        }
        System.out.println("outloopByTryCatch======>>>END");
    }        

结果:

outloopByTryCatch==j==0
outloopByTryCatch==j==1
outloopByTryCatch==j==2
====>>outloopByTryCatch跳出
outloopByTryCatch======>>>END

结论:用抛异常的方式跳出,但是不推荐

原文地址:https://www.cnblogs.com/fastfn/p/9777067.html

时间: 2024-08-09 05:25:34

Java跳出多重循环的相关文章

java跳出多重循环的两种方法

1在 Java 中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的 break 语句,即可跳出外层循环.例如,ok:for(int i=0;i<10;i++){for(int j=0;j<10;j++){System.out.println( " i= " + i + " ,j= " + j);if(j ==5) break ok;}}2让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维

Java中如何跳出多重循环?

在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环.例如, ok: for(int i=0;i<10;i++) { for(int j=0;j<10;j++) { System.out.println(“i=” + i + “,j=” + j); if(j == 5) break ok; } } 另外,不建议使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中

java之跳出多重循环

在java 中 要想跳出多重循环,可以在想要跳出的循环外,加上一个标号,然后跳出此标号,也就是跳出相应的循环.如: 我们希望的是当里面的for循环的b=8时,结束整个循环,但是加上break后只是跳出当前的一层for循环,但是我们又不想结束整个方法,所以不能用return,这个时候可以在想要跳出的循环外,加上一个标号,然后跳出此标号,也就是跳出相应的循环.如: 或者可以在想要跳出循环的时候加上可以跳出外部循环的条件.如:

Java面试题总结之如何跳出多重循环

Java中break只能跳出当前循环,要想跳出多重循环可以使label标签: 例: public class StepoverMultiLoop { public static void main(String[] args) { int count = 0; ok: for (int i = 0; i < 100; i++){ for (int j = 0; j < 100; j++){ if ((i + j) == 10){ System. out.println(++count); br

跳出多重循环 JS

关于如何跳出多重循环 loop: //循环标记 for(var key in jsonObj){   for(var i=0;i<jsonObj[key].length;i++){      if(jsonObj[key][i].password=='123456'){         break loop;//跳出双重循环      }   } }

break跳出多重循环

大家都知道break只能跳出当前的一个循环语句,如果碰到要跳出多个循环体,那么我们就该在循环体开头设置一个标志位,然后使用带此标志位的break语句跳出多重循环 1 jump: 2 for(int i=0;i<10;i++){ 3 for(int j=0;j<5;j++){ 4 System.err.println(j); 5 if(i==5) 6 break jump; 7 } 8 }

JS 跳出多重循环

今天学到了如何跳出多重循环 原文地址:https://www.cnblogs.com/dmc-nero/p/9573971.html

java outterLoop跳出多重循环用法以及详解

List<CommResultMsg> listresult=new ArrayList<CommResultMsg>(); outterLoop :for (int i = 0; i < model.size()-1; i++) { for (int j = model.size()-1; j > i; j--) { if (model.get(j).getLoaneeApplyId()==model.get(i).getLoaneeApplyId()) { resu

java跳出多重嵌套循环

public class BreaklFor { public static void main(String args[]){ OK: //设置一个标记 使用带此标记的break语句跳出多重循环体 for(int i=1;i<100;i++){ //让i循环99次 for(int j=1;j<=i;j++){ if(i==10){ break OK ; } System.out.print(i + "*" + j + "=" + i*j) ; Syst