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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 禅伤 中级黑马   /  2014-7-28 17:59  /  1600 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


如上图所示,为何System.out.println( "mFileReader.read(buf)="+mFileReader.read(buf));打出mFileReader.read(buf)=-1,
while语句中测试条件:mFileReader.read(buf)=-1的时候不是要终止吗,为何还会执行while循环语句打印出-1?

评分

参与人数 1技术分 +1 收起 理由
Doraemon + 1

查看全部评分

7 个回复

倒序浏览
这里又进行了一遍读行为吧。如果while测试条件里正好把文件读完了这里再读不久会出-1了吗;改为System.out.println( "mFileReader.read(buf)="+num);
回复 使用道具 举报
while(条件),你在条件里面已经读了一次了,下面打印的时候,你又读一次,读了两次了。懂了没。
回复 使用道具 举报
star5603 发表于 2014-7-28 18:12
while(条件),你在条件里面已经读了一次了,下面打印的时候,你又读一次,读了两次了。懂了没。 ...

那while循环执行了几次?难道不是执行几次打印机次吗
回复 使用道具 举报
禅伤 发表于 2014-7-28 18:50
那while循环执行了几次?难道不是执行几次打印机次吗

你在循环条件里面不要执行读操作
回复 使用道具 举报
禅伤 发表于 2014-7-28 18:50
那while循环执行了几次?难道不是执行几次打印机次吗

执行几次打印几次,但执行一次读了两次打印一次。
如果读的文件够大,结果会少一半
回复 使用道具 举报
禅伤 发表于 2014-7-28 18:50
那while循环执行了几次?难道不是执行几次打印机次吗

你没明白我的意思,你在while的条件里面读了一次,这次内容你没打印。然后你在while循环中的打印语句里又读了一次(这次内容是继条件里读的内容的后面内容,非条件里面读的内容)。
回复 使用道具 举报
禅伤 中级黑马 2014-7-28 21:00:13
8#
star5603 发表于 2014-7-28 19:52
你没明白我的意思,你在while的条件里面读了一次,这次内容你没打印。然后你在while循环中的打印语句里又 ...

谢谢,明白了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马