A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© せR3n、何必装纯 黑马帝   /  2011-11-23 10:43  /  1920 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在学习中遇到一个问题
如果我们使用break可以跳出当前循环,
for (int i = 0; i < 5; i++) {
   if(i==2){
    break;
   }
  }
,但是现在我有多重循环,我怎么跳出最外一层的循环
例如:
for (int i = 0; i < 5; i++) {
   System.out.println("i= "+i);
   for (int j = 0; j < 5; j++) {
    System.out.println("j="+j);
    for (int j2 = 0; j2 < 5; j2++) {
     if (j2==2) {
      //跳出所有的循环  怎么办.....
     }
    }
   }
  }忘高手指点

7 个回复

倒序浏览
崔浩 黑马帝 2011-11-23 11:05:23
沙发
   outer://定义标签,紧跟英文的“:”的标识符
System.out.println("i= "+i);
   for (int j = 0; j < 5; j++) {
    System.out.println("j="+j);
    for (int j2 = 0; j2 < 5; j2++) {
     if (j2==2) {
     break outer;//跳出来外层循环也可以用continue跳过标签指定的那层循环的那次循环
     }
    }
   }
  }

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
楼上正解。在循环外定义一个标签是一种方法。但一般来说最好
是让外层的循环条件表达式的结果可以受到里层循环体代码的控制
int arr[][] = {{1,2,3},{4,5,6,7},{9}};
boolean found = false;
for(int i=0;i<arr.length && !found;i++)
        {
                for(int j=0;j<arr[i].length;j++)
                {
                        System.out.println(“i=” + i + “,j=” + j);
                        if(arr[i][j]  == 5)
                        {
                                found = true;
                                break;
                        }
                }
        }

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
本帖最后由 袁世宇 于 2011-11-23 11:45 编辑

    breakFor: for (int i = 0; i < 5; i++) {  
                       System.out.println("i= "+i);
                       for (int j = 0; j < 5; j++) {  
                           System.out.println("j="+j);
                           for (int j2 = 0; j2 < 5; j2++) {
                           if (j2==2) {
                              break breakFor;
     }
    }
   }
  }


使用任意字符串,如例子中的breakFor,直接break到最外层循环。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
冯敏 黑马帝 2011-11-23 13:16:40
报纸
最好的办法就是使用带标号的跳转语句
out:for (int i = 0; i < 5; i++) {
   System.out.println("i= "+i);
  inner: for (int j = 0; j < 5; j++) {
    System.out.println("j="+j);
    for (int j2 = 0; j2 < 5; j2++) {
     if (j2==2) {
     }
    }
   }
  }
这样想跳出哪个循环就直接用break 标记名跳出就行了

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
可以控制外层的循环条件使他为假,这样就会跳出了。而且这个方法比较好!
回复 使用道具 举报
强子 黑马帝 2011-11-23 13:34:55
7#
楼上全正解
最简单的就是
i = 5;
j = 5;
break;

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
颜小飞 黑马帝 2011-11-23 22:47:54
8#
本帖最后由 颜小飞 于 2011-11-23 22:48 编辑

跳出外部循环的方式主要有两种:
1、在外部循环外定义一个标记,
  1. outfor://第一种方式
  2. for(int i=0;i<10;<i++)
  3. {
  4.    for(int j=0;j<10;j++)
  5.   {
  6.        if(i==5&&j==5)
  7.         break outfor;//跳出外部循环
  8.   }
  9. }
复制代码
2,在循环最外定义一个boolean的变量,内层循环去改变这个boolean的值,根据这个值来判断是否跳出
  1. boolean check=false;//定义一个变量值来判断是否跳出
  2. for(int i=0;i<10;<i++)
  3. {
  4.   if(check)//如果为true则跳出
  5.     break;
  6.    for(int j=0;j<10;j++)
  7.   {
  8.        if(i==5&&j==5)
  9.         check=true;
  10.         break;//跳出内层循环
  11.   }
  12. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马