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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 来自沙沙的我 于 2014-5-31 16:13 编辑
  1. public class IO_11 {
  2.         public static void main(String[] args) throws IOException
  3.         {
  4.                 FileReader ty=new FileReader("D:/fdf.txt");
  5.                 char[] a1=new char[3];
  6.                 int i=0;
  7.                 while((i=ty.read(a1))!=-1)
  8.                 {
  9.                         
  10.                         System.out.println("a1[]读取数目为"+i+",为"+new String(a1));
  11.                         
  12.                 }
  13.                 ty.close();
  14.         }        
  15. }
复制代码


上面的代码通过且读取正确;可是下面的代码运行正常但是读取的时候混乱错误,求解为什么?
  1. import java.io.*;
  2. public class IO_11 {
  3.         public static void main(String[] args) throws IOException
  4.         {
  5.                 FileReader ty=new FileReader("D:/fdf.txt");
  6.                 char[] a1=new char[3];
  7.                
  8.                 while((ty.read(a1))!=-1)
  9.                 {
  10.                         int i=ty.read(a1);
  11.                         System.out.println("a1[]读取数目为"+i+",为"+new String(a1));
  12.                         
  13.                 }
  14.                 ty.close();
  15.         }        
  16. }
复制代码


6 个回复

倒序浏览
while()中Read函数已经读取了文本中的字符,但是你没输出来,所以会出现混乱。
回复 使用道具 举报
本帖最后由 luoanjade 于 2014-5-30 23:17 编辑

这个错误很明显呀,我之前也看到过类似的帖子。while里面已经读过一次了,在下面又读了一次。跟这个贴很类似:http://bbs.itheima.com/forum.php?mod=viewthread&tid=110968&page=1#pid668912
回复 使用道具 举报
读了两次啊!一次没有打印,一次打印,当然会出现不对啊!
回复 使用道具 举报
  可是为什么会是那样的结果呢?
回复 使用道具 举报
没壳的蜗牛 发表于 2014-5-30 23:13
读了两次啊!一次没有打印,一次打印,当然会出现不对啊!

恩,是这样。谢谢啊。
回复 使用道具 举报
谢谢大家的回复。确实是那样。

每次while循环都读取了两次,而i只是被赋值了第二次,所以本来的四次赋值变成了只有第二次和第四次。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马