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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 謓心い謓意 中级黑马   /  2014-6-20 17:45  /  1127 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中查找到某个数字。
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怎么起的作用?自己没看太懂,求大神分析......

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

5 个回复

倒序浏览
当找到数字5之后,found变成true,意味着已经找到数字了。之后break,跳出了内部循环,再进行外部循环的时候,外部循环的条件表达式i<arr.length&&!found(为假)已经不成立了,所以也就不进行循环了。但要注意,这个控制外部循环条件表达式的变量要定义在外部循环之前,而不能定义在内部循环体里,这一点应该就是你的疑惑了。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
Good   解决我的疑惑的地方了!!
回复 使用道具 举报
仔细看了你的程序,变量found就是为了中断外层循环用的,减少了循环次数。另外你的程序有错误, if(arr[j]  == 5)是不可能成立的,arr[j]在这里是一个对象,而5是一个int类型数,应该是写成if(arr[i][j]  == 5)  ,在满足这个条件时,fonud变为true 外层循环的!found变为false循环中断,希望可以帮到你,我也是新人。
回复 使用道具 举报
itisdream 发表于 2014-6-20 20:46
仔细看了你的程序,变量found就是为了中断外层循环用的,减少了循环次数。另外你的程序有错误, if(arr[j]  ...

恩,我写错了是arr[j]==5
回复 使用道具 举报
唐杰亮 发表于 2014-6-20 18:36
当找到数字5之后,found变成true,意味着已经找到数字了。之后break,跳出了内部循环,再进行外部循环的时 ...

正解,简直不要太详细
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马