末尾练习题的疑问

末尾练习题的疑问


http://img1.sycdn.imooc.com//climg/5acb750a0001b34806690195.jpg

while循环中,n=fis.read()语句放在输出语句后就一切正常。

放在输出语句前,结果会输出文本内容,然后报错,提示输出语句 java.util.IllegalFormatCodePointException。

这是什么原因呢?请老师解答一下

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

问题出在 System.out.printf("%c",n);上,你可以改成System.out.print((char)n);就行了不出异常了。但这样一来,你有没有发现“n=fis.read()放在输出语句前”则会少输出一个字符?这是因为你在int n=fis.read()的时候就已经指向了第一个字符,然后进入循环后没输出又指向了下一个字符。万一这是文件的末尾没内容就会出现异常了。这不是正确的写法,正确的就应该把“n=fis.read()放在输出语句后面”。祝:学习愉快

  • 程序人生001 提问者 #1
    确实是这样,好像是printf的话,格式化输出报的错误,而print的强制类型转换把-1变成了问好。。。感谢老师
    2018-04-10 20:38:15
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师