黑马程序员技术交流社区

标题: 完全跳出当前的多重嵌套循环的两种方式 [打印本页]

作者: 54niuge    时间: 2015-9-22 20:19
标题: 完全跳出当前的多重嵌套循环的两种方式
方式一:可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break 语句,即可跳出外层循环。
这种方式都知道,且简单。
我要说的肯定是方式二:让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中查找到某个数字,代码如下:
class ArryDemo
{
        public static void main(String[] args)
        {
                int arr[][] = {{1,2,3},{4,5,6,7},{9}};
                boolean found = true;
                for(int i=0;i<arr.length && found;i++)
                {
                        int j=0;//j必须定义在for循环外面,否则最下面的输出语句无法使用j
                        for( ;j<arr[i].length;j++)
                        {
                               
                                if(arr[i][j]  == 9)
                                {
                                        //数据找到后found变成false,break跳到外面的for循环时判断条件为false从而结束外循环
                                        found = false;
                                        break;//跳出里面的for循环
                                }
                                System.out.println("i=" + i + ",j="+ j);//输出寻找的过程
                        }
                        if (found==false)//此处必须判断,否则i每遍历一次下面的语句就会输出一次
                        {
                                System.out.println("此数在二维数组中的位置为:a["+i+"]["+j+"]");
                        }
                }
        }
}

输出结果为:
i=0,j=0
i=0,j=1
i=0,j=2
i=1,j=0
i=1,j=1
i=1,j=2
i=1,j=3
此数在二维数组中的位置为:a[2][0]


作者: charryxiaocai    时间: 2015-9-22 23:15
j可以放在for循环里面,只要把  System.out.println("i=" + i + ",j="+ j);放在if(==9)里面就可以了
作者: 54niuge    时间: 2015-9-24 00:06
charryxiaocai 发表于 2015-9-22 23:15
j可以放在for循环里面,只要把  System.out.println("i=" + i + ",j="+ j);放在if(==9)里面就可以了 ...

我是说  if (found==false)判断语句里面的System.out.println("此数在二维数组中的位置为:a["+i+"]["+j+"]");输出语句中的j不能用了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2