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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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;
        }
}
另外,我个人通常并不使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中查找到某个数字。
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.length;j++){
               System.out.println(“i=” + i + “,j=” + j);
               if(arr[j]  == 5) {
                      found = true;
                      break;
               }
        }
}

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 好像是java核心基础中的句子代码吧.

查看全部评分

9 个回复

倒序浏览
设置个标记,标记你需要跳到哪个for循环就行。
测试代码如下:
class Demo
{
        public static void main(String[] args)
        {
                L:for(int i=0;i<arr.length && !found;i++)       {

                for(int j=0;j<arr.length;j++){

                       System.out.println("i="+ i + ",j=" + j);

                       if(arr[j]  == 5) {

                              found = true;

                              break L;

                       }

                }

        }
        }
}

回复 使用道具 举报
我记得是可以给循环编号:

a:for(int i=0;i<arr.length && !found;i++)       {

       b: for(int j=0;j<arr.length;j++){

               System.out.println(“i=” + i + “,j=” + j);

               if(arr[j]  == 5) {

                      found = true;

                      break a;

你试试看,这样能不能跳出外循环
回复 使用道具 举报
楼下好心,可惜没看清楼主是分享的,不是疑问的{:soso_e128:}
多希望更多人提问题,一群饿狼等着呢
回复 使用道具 举报
定义标签就可以跳出任意一层循环,我感觉你的for循环写的也有点问题,给你改了该啊。

public class Test4 {



        public static void main(String[] args) {
                int arr[][] = {{1,2,3},{4,5,6,7},{9}};
                boolean found = false;
                a:       //定义循环的标签
                for(int i=0;i<arr.length && !found;i++){
                        b:   //定义循环的标签
                               
                        for(int j=0;j<arr[i].length;j++){
                               System.out.println("i=" + i + "j=" + j);
                               if(arr[i][j]== 5) {
                                      found = true;
                                      break a;
//                                      break b;//   可以跳出b
                               }
                        }
                }
        }
}
回复 使用道具 举报
尹桥印 发表于 2013-5-3 15:56
都回答了。其实如果不为技术分来的,也让自己有一个知识复习的

我是想着不能辜负大家的好心,既然如此,那我就不担心了
回复 使用道具 举报
曹睿翔 发表于 2013-5-3 15:49
楼下好心,可惜没看清楼主是分享的,不是疑问的
多希望更多人提问题,一群饿狼等着呢 ...

哈哈  曹哥万福哈
回复 使用道具 举报
好像C语言中的 goto 语句
回复 使用道具 举报
标号没有使用过,好像说使用标号会破坏面向对象编程
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马