黑马程序员技术交流社区

标题: 用while遍历目录的结束条件是什么? [打印本页]

作者: 未发光的金子    时间: 2014-4-21 22:33
标题: 用while遍历目录的结束条件是什么?
代码如下,我这调用它根本停不下来啊!!!
  1. public void dir (String serName){
  2.                
  3.                 System.out.println("以下是目录:");
  4.                 try {
  5.                        
  6.                         s = new Socket("10.12.39.27",8888);//连接服务器
  7.                         dis = new DataInputStream(new BufferedInputStream(s
  8.                                         .getInputStream()));//定义数据输入流

  9.                         int BUFSIZE = 8912;
  10.                         byte[] buf = new byte[BUFSIZE];
  11.                         System.out.println("chdn");
  12.                         while (true) {
  13.                                
  14.                                 int data = 0;//read用来保存从文件中读取过来的数据
  15.                                 if (dis != null) {
  16.                                         data= dis.read(buf);//遇到输入流的末尾,返回-1
  17.                                         String str = new String(buf);
  18.                                         System.out.println(str);
  19.                                 }//读两次才执行跳出
  20.                                 else if (data== -1) {
  21.                                         System.out.println("跳出");
  22.                                         break;
  23.                                 }
  24.                                 System.out.println("ssssssss");
  25.                         }
  26.                         System.out.println("zheng");
  27.                 } catch (IOException e) {
  28.                         System.out.println("错了");
  29.                 } finally {

  30.                         try {
  31.                                 dis.close();
  32.                         } catch (IOException e) {
  33.                                 e.printStackTrace();
  34.                         }

  35.                         try {
  36.                                 s.close();
  37.                         } catch (IOException e) {
  38.                                 e.printStackTrace();
  39.                         }
  40.                         System.out.println("asdf");
  41.                 }

  42.         }
  43.        
复制代码

作者: 忘川    时间: 2014-4-21 22:44
本帖最后由 忘川 于 2014-4-21 22:49 编辑
  1. boolean flag=true;//定义一个标志位控制
  2.                   while ( flag ) {
  3.                                 
  4.                                 int data = 0;
  5.                                 if (dis != null) {
  6.                                         data= dis.read(buf);
  7.                                         String str = new String(buf);
  8.                                         System.out.println(str);
  9.                                 }
  10.                                 else if (data== -1) {
  11.                                         System.out.println("跳出");
  12.                                          flag=false;
  13.                                 }
  14.                                 System.out.println("ssssssss");
  15.                         }
复制代码
  1.                         
复制代码

作者: 别小乐    时间: 2014-4-21 23:39
我想你的问题可能就在这里。
  1. else if (data== -1) {
  2.                                         System.out.println("跳出");
  3.                                         break;
  4. }
复制代码


对于break关键字来说,你这样写在if语句中是没有作用, 我们都知道{} 这个双括号代表的是作用于,你把break放在System.out.println()后面,但是break还是在if语句块的作用域。

也就是说,你这段代码,使用与不使用break几乎没有区别,因为到右括号,作用于就结束了,对于while而言,brek自然也就没有作用了。




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