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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 肖亚光 中级黑马   /  2013-1-11 16:37  /  1631 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 可乐咖啡厅 于 2013-1-12 17:44 编辑
  1.                         for(File f : files)
  2.                         {
  3.                         try{
  4.                                 BufferedReader br = new BufferedReader(new FileReader(f));
  5.                                 String line = "";
  6.                                 while((line = br.readLine())!=null)
  7.                                 {
  8.                                        
  9.                                         if(line.indexOf("ssssssss")!=-1);
  10.                                         {
  11.                                                 System.out.println(line);
  12.                                                 System.out.println(f.getName());
  13.                                                 String IP = line.split(" ")[4];
  14.                                                 System.out.println(IP);
  15.                                                 break;
  16.                                         }
  17.                                 }
  18.                         }

  19. 请问能跳出循环么?

  20. 我打印的时候 用return肯定是不行  是跳出这次循环继续下次循环
  21. [fly][fly]我的目的只是想在一个文件里面打印一条信息 然后跳出 继续搜索下个文件
  22. [/fly][/fly]但是我用break跳出循环
  23. 为什么遍历完了文件以后 还要再遍历一遍

  24. 也就是我用return的时候 是该文件联系打印符合条件的信息。
  25. 但是用break的时候是该文件打印一条信息 然后等遍历完文件后再重新遍历该文件。再打印一条信息 ,是怎么回事呢



  26. 都不看清楚  就直接说!!!....................

  27. 别回答了。。。。。。
复制代码

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 赞一个!

查看全部评分

9 个回复

倒序浏览
本帖最后由 钟伟杰 于 2013-1-11 17:15 编辑

因为你的break在if(){}里面,跳也是跳出这个判断语句,但是if(){}执行完System.out.println(IP);这语句就结束了,这个break没有什么意义,你想要执行完if(){}后跳出while(){},要不就在while(){}内加break,要么在while(){}前面加个标识,break仍然在if(){}里,在break后加上那个标识表示你跳出这个标识的循环。
浅薄见解,若有误导,请多多见谅{:soso_e183:}
回复 使用道具 举报
钟伟杰 发表于 2013-1-11 17:10
因为你的break在if(){}里面,跳也是跳出这个判断语句,但是if(){}执行完System.out.println(IP);这 ...

呵呵  break 是可以跳出while循环了...
回复 使用道具 举报
粗略看了一下,你这是二层循环吧? for嵌套while
你的break只跳出了while,for还没break呢。。。{:2_31:}
回复 使用道具 举报
06.                                while((line = br.readLine())!=null)

07.                                {

08.                                       

09.                                        if(line.indexOf("ssssssss")!=-1);

10.                                        {

11.                                                System.out.println(line);

12.                                                System.out.println(f.getName());

13.                                                String IP = line.split(" ")[4];

14.                                                System.out.println(IP);

15.                                                break;  //这里已经跳出了

16.                                        }

17.                                }

//如果还要跳出for循环, 你要在 18行 这里加break;   

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 赞一个!

查看全部评分

回复 使用道具 举报
要跳出for循环?这样做m:for(File f : files){}
if(line.indexOf("ssssssss")!=-1);
{
            System.out.println(line);
            System.out.println(f.getName());
            String IP = line.split(" ")[4];
            System.out.println(IP);
            break m;
}
用return的话是结束函数(方法)了

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 赞一个!

查看全部评分

回复 使用道具 举报
黑马-项泽宇 发表于 2013-1-11 18:58
粗略看了一下,你这是二层循环吧? for嵌套while
你的break只跳出了while,for还没break呢。。。 ...

麻烦请仔细看我的问题 我就是想只跳出while 不跳出for
我的意思是为什么for 遍历一遍完了 还会再遍历一遍
回复 使用道具 举报
谢毅 发表于 2013-1-11 19:11
要跳出for循环?这样做m:for(File f : files){}
if(line.indexOf("ssssssss")!=-1);
{

麻烦看一下....
回复 使用道具 举报
张云杰 发表于 2013-1-11 19:02
06.                                while((line = br.readLine())!=null)

07.                          ...

...
都这么回答  算了 我的目的就是跳出while 执行for
我的意思是for遍历了一遍以后 重新又开始遍历文件  
也就是本该一个文件打印一条信息  为什么隔了一段时间又打印该文件的信息
如果没有跳出while 会连续打印该文件的信息  现在是跳出while 应该一个文件最多打印一条 但是现在却隔段时间就遍历一次一遍文件列表!!
回复 使用道具 举报
可乐咖啡厅 发表于 2013-1-12 17:42
...
都这么回答  算了 我的目的就是跳出while 执行for
我的意思是for遍历了一遍以后 重新又开始遍历文件  ...


不不不, 因为你自己在上面说了 一个文件里面打印一条信息, 那是不是就是说 满足所有条件的情况下 打印1条呢?  但是, 你上面的程序, 没有加break啊, 所以 就一直执行下去啊.. 我上面说的很清楚了,  如果你只有打印1条,  那就在你执行for语句的时候 在跳出, 就是说 while 跳出, 然后再加个break跳出for , 是你不理解, 还是我说不清楚??
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马