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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qq8921310 高级黑马   /  2014-10-26 23:17  /  1853 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

练习二 从C盘的一个文本文件复制到D盘


里面while循环的条件不太明白
视频里 while(num=fr.read(buf)!=-1)
我写的时候直接报错。错误:不兼容类型Int无法转换为Boolean

按照自己的理解写的时候
while(fr.read(buf)!=-1)
num = fr.read(buf)

编译时通过 但是运行时提示角标越界。

第三次while(fr.read()!=-1)
直接通过。有没有大神说明一下。

8 个回复

倒序浏览
我的问题已经解决了,自己没理解好。沉了吧。
回复 使用道具 举报
while(num=fr.read(buf)!=-1)这个少一对括号。while((num=fr.read(buf))!=-1)
第二个你读完之后又读了一次read,它每次是从读完之后开始接着往下读的,已经读完,所以会角标越界。
第三个你没有往read里面传数据。要传入你所读的数据的。
回复 使用道具 举报
:):):):):)
回复 使用道具 举报
这样写:while((num = fr.read(buf))!=-1)  ,加括号,返回的是boolean值了
回复 使用道具 举报
第一个肯定不对少括号
while(fr.read(buf)!=-1)
num = fr.read(buf)
你读了2次buf吧
回复 使用道具 举报
对于while(num=fr.read(buf)!=-1),因该改为while((num=fr.read(buf))!=-1)
回复 使用道具 举报
楼主好细心,学习了
回复 使用道具 举报
顶一个!:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马