Java跳出多重循环

梦里梦外; 2022-01-14 03:03 406阅读 0赞

From: https://www.cnblogs.com/fastfn/p/9777067.html

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

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

代码示例:break

复制代码

  1. private static void testBreak() {
  2. for (int i = 0; i < 3; i++) {
  3. for (int j = 0; j < 5; j++) {
  4. System.out.println("testBreak==j==" + j);
  5. if (j == 2)
  6. break;
  7. }
  8. System.out.println("testBreak==i====>>>" + i);
  9. }
  10. System.out.println("testBreak======>>>END");
  11. }

复制代码

结果:

复制代码

  1. testBreak==j==0
  2. testBreak==j==1
  3. testBreak==j==2
  4. testBreak==i====>>>0
  5. testBreak==j==0
  6. testBreak==j==1
  7. testBreak==j==2
  8. testBreak==i====>>>1
  9. testBreak==j==0
  10. testBreak==j==1
  11. testBreak==j==2
  12. testBreak==i====>>>2
  13. testBreak======>>>END

复制代码

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

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

代码:

复制代码

  1. private static void outloopByBreak() {
  2. boolean flag = true;
  3. for (int i = 0; i < 3 && flag; i++) {
  4. for (int j = 0; j < 5; j++) {
  5. System.out.println("outloopByBreak==j==" + j);
  6. if (j == 2) {
  7. flag = false;
  8. break;
  9. }
  10. }
  11. System.out.println("outloopByBreak==i====>>>" + i);
  12. }
  13. System.out.println("outloopByBreak======>>>END");
  14. }

复制代码

结果:

  1. outloopByBreak==j==0
  2. outloopByBreak==j==1
  3. outloopByBreak==j==2
  4. outloopByBreak==i====>>>0
  5. outloopByBreak======>>>END

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

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

代码:

复制代码

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

复制代码

结果:

  1. outloopByBreakLikeGoto==j==0
  2. outloopByBreakLikeGoto==j==1
  3. outloopByBreakLikeGoto==j==2
  4. outloopByBreakLikeGoto======>>>END

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

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

代码:

复制代码

  1. private static void outloopByTryCatch() {
  2. try {
  3. for (int i = 0; i < 3; i++) {
  4. for (int j = 0; j < 5; j++) {
  5. System.out.println("outloopByTryCatch==j==" + j);
  6. if (j == 2)
  7. throw new Exception();
  8. }
  9. System.out.println("outloopByTryCatch==i====>>>" + i);
  10. }
  11. } catch (Exception e) {
  12. System.out.println("====>>outloopByTryCatch跳出");
  13. }
  14. System.out.println("outloopByTryCatch======>>>END");
  15. }

复制代码

结果:

  1. outloopByTryCatch==j==0
  2. outloopByTryCatch==j==1
  3. outloopByTryCatch==j==2
  4. ====>>outloopByTryCatch跳出
  5. outloopByTryCatch======>>>END

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

发表评论

表情:
评论列表 (有 0 条评论,406人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java 如何多重循环

    跳出多重循环有两种方法 (一)可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break 语句,即可跳出外层循环 例: out:for(

    相关 java多重嵌套循环

    在java里面,我们知道有goto这个关键字,但是实际却没有啥作用,这就让我们不像在c/c++里面能够随便让程序跳到那去执行,而break只能跳出当前的一个循环语句,如果要跳出