黑马程序员技术交流社区

标题: while循环小疑惑? [打印本页]

作者: 禅伤    时间: 2014-7-28 17:59
标题: while循环小疑惑?

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

作者: 江苏孙浩    时间: 2014-7-28 18:11
这里又进行了一遍读行为吧。如果while测试条件里正好把文件读完了这里再读不久会出-1了吗;改为System.out.println( "mFileReader.read(buf)="+num);
作者: star5603    时间: 2014-7-28 18:12
while(条件),你在条件里面已经读了一次了,下面打印的时候,你又读一次,读了两次了。懂了没。
作者: 禅伤    时间: 2014-7-28 18:50
star5603 发表于 2014-7-28 18:12
while(条件),你在条件里面已经读了一次了,下面打印的时候,你又读一次,读了两次了。懂了没。 ...

那while循环执行了几次?难道不是执行几次打印机次吗
作者: zxdanshui    时间: 2014-7-28 18:53
禅伤 发表于 2014-7-28 18:50
那while循环执行了几次?难道不是执行几次打印机次吗

你在循环条件里面不要执行读操作
作者: icris    时间: 2014-7-28 18:54
禅伤 发表于 2014-7-28 18:50
那while循环执行了几次?难道不是执行几次打印机次吗

执行几次打印几次,但执行一次读了两次打印一次。
如果读的文件够大,结果会少一半

作者: star5603    时间: 2014-7-28 19:52
禅伤 发表于 2014-7-28 18:50
那while循环执行了几次?难道不是执行几次打印机次吗

你没明白我的意思,你在while的条件里面读了一次,这次内容你没打印。然后你在while循环中的打印语句里又读了一次(这次内容是继条件里读的内容的后面内容,非条件里面读的内容)。

作者: 禅伤    时间: 2014-7-28 21:00
star5603 发表于 2014-7-28 19:52
你没明白我的意思,你在while的条件里面读了一次,这次内容你没打印。然后你在while循环中的打印语句里又 ...

谢谢,明白了!




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