黑马程序员技术交流社区

标题: 这个while语句的判断条件是怎么实现的 [打印本页]

作者: 1021361407    时间: 2015-3-17 00:33
标题: 这个while语句的判断条件是怎么实现的
本帖最后由 1021361407 于 2015-3-17 00:35 编辑

刚刚看毕老师的视频,讲io流,在文本文件读取的代码中有这么一句

  1. <P>char []buf=new char[3];</P>
  2. <P>while((num=fr.read(buf))!=-1)</P>
  3. <P>{</P>
  4. <P>}</P>
复制代码

这句(num=fr.read(buf))!=-1怎么理解呢?
总是绕不过这个逻辑来,fr.read(buf)对num赋值,然后和-1比较对吧,关键是这个赋值操作,fr.read(buf)返回的是读取的字符数,达到流的末尾则返回-1,那么问题来了,在对文件末尾读取的时候,如果读到最后一个字符的时候fr.read(buf)返回一个int对num赋值然后执行循环体,然后又重新fr.read(buf)返回一个-1,结束循环
这样理解对么?
作者: zhqw_heima    时间: 2015-3-17 08:42
这个我也没有看懂,哪个高手给我们解答一下!
作者: 健健    时间: 2015-3-17 09:05
看不懂,来个大神读一下
作者: liuzhen    时间: 2015-3-17 11:02
我也没看懂!!!
作者: 艺多不压身丶    时间: 2015-3-17 11:10
  1. int num=null;
  2. while((num=fr.read(buf))!=-1){

  3. }
复制代码

这个设计的有点复杂。
fr是字符读取。num是int型,可以说是字节。
字符读取后赋值给num,num在存入buf容器
而-1则是文件的结束标记。当读到-1的时候循环不满足,也就不会继续执行了。

我不知道我这么理解对不对。欢迎大家补充。没研究过这个。




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