Java编程输入流方面的read()方法问题

图1这种while语句里面直接写iStream.read()!=-1是错误的只能输出:elhnoeyu图2这种写法是正确的,因为多加了temp会正确输出:helloChi... 图1这种while语句里面直接写iStream.read()!=-1 是错误的只能输出:el hn oeyu图2这种写法是正确的,因为多加了temp 会正确输出: hello China I love you想问下为什么出现这种情况?我感觉这两个语句要表达的意思是一样的,都是如果没读取到结尾(即返回-1)就继续往下读,然后输出,请详细分析下为什么有区别?谢谢! 展开
 我来答
百度网友428ddb9
2019-03-31 · TA获得超过203个赞
知道小有建树答主
回答量:112
采纳率:90%
帮助的人:42.8万
展开全部
这里涉及到指针的问题,输入流在读取文件的时候用指针来标识从哪里开始读、上一次读到了哪里、读到哪里结束等等,read()方法就是读取到下一个指针位置。你在while判断中调用了read()方法,指针就会右移一个单位,输出语句中又用到了read()方法,指针又要右移一个单位。第一个方法中,每循环一次,指针会右移两个单位,肯定是不行的。所以我们只能用第二种方法,用一个变量记录下read()的值,然后输出变量。
不仅仅在输入流,所有用到指针的地方,都要注意这一点。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式