黑马程序员技术交流社区
标题:
这个while语句的判断条件是怎么实现的
[打印本页]
作者:
1021361407
时间:
2015-3-17 00:33
标题:
这个while语句的判断条件是怎么实现的
本帖最后由 1021361407 于 2015-3-17 00:35 编辑
刚刚看毕老师的视频,讲io流,在文本文件读取的代码中有这么一句
<P>char []buf=new char[3];</P>
<P>while((num=fr.read(buf))!=-1)</P>
<P>{</P>
<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
int num=null;
while((num=fr.read(buf))!=-1){
}
复制代码
这个设计的有点复杂。
fr是字符读取。num是int型,可以说是字节。
字符读取后赋值给num,num在存入buf容器
而-1则是文件的结束标记。当读到-1的时候循环不满足,也就不会继续执行了。
我不知道我这么理解对不对。欢迎大家补充。没研究过这个。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2