黑马程序员技术交流社区

标题: java中跳出当前多重循环问题 [打印本页]

作者: 謓心い謓意    时间: 2014-6-20 17:45
标题: java中跳出当前多重循环问题
让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中查找到某个数字。
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;
                        }
                }
        }


怎么跳出的外层循环,这里面的变量found怎么起的作用?自己没看太懂,求大神分析......


作者: 唐杰亮    时间: 2014-6-20 18:36
当找到数字5之后,found变成true,意味着已经找到数字了。之后break,跳出了内部循环,再进行外部循环的时候,外部循环的条件表达式i<arr.length&&!found(为假)已经不成立了,所以也就不进行循环了。但要注意,这个控制外部循环条件表达式的变量要定义在外部循环之前,而不能定义在内部循环体里,这一点应该就是你的疑惑了。
作者: 謓心い謓意    时间: 2014-6-20 18:57
Good   解决我的疑惑的地方了!!
作者: itisdream    时间: 2014-6-20 20:46
仔细看了你的程序,变量found就是为了中断外层循环用的,减少了循环次数。另外你的程序有错误, if(arr[j]  == 5)是不可能成立的,arr[j]在这里是一个对象,而5是一个int类型数,应该是写成if(arr[i][j]  == 5)  ,在满足这个条件时,fonud变为true 外层循环的!found变为false循环中断,希望可以帮到你,我也是新人。
作者: 謓心い謓意    时间: 2014-6-21 08:38
itisdream 发表于 2014-6-20 20:46
仔细看了你的程序,变量found就是为了中断外层循环用的,减少了循环次数。另外你的程序有错误, if(arr[j]  ...

恩,我写错了是arr[j]==5
作者: a6511631    时间: 2014-6-21 09:38
唐杰亮 发表于 2014-6-20 18:36
当找到数字5之后,found变成true,意味着已经找到数字了。之后break,跳出了内部循环,再进行外部循环的时 ...

正解,简直不要太详细




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