Java跳出多重循环
Posted FN飞鸟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
结论:用抛异常的方式跳出,但是不推荐
以上是关于Java跳出多重循环的主要内容,如果未能解决你的问题,请参考以下文章
4在JAVA中如何跳出当前的多重嵌套循环?-Java面试题答案