黑马程序员技术交流社区

标题: 关于FileReader读取数组字符不懂的一个地方 [打印本页]

作者: 来自沙沙的我    时间: 2014-5-30 21:50
标题: 关于FileReader读取数组字符不懂的一个地方
本帖最后由 来自沙沙的我 于 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. }
复制代码



作者: 小坏坏    时间: 2014-5-30 22:53
while()中Read函数已经读取了文本中的字符,但是你没输出来,所以会出现混乱。
作者: luoanjade    时间: 2014-5-30 23:09
本帖最后由 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
读了两次啊!一次没有打印,一次打印,当然会出现不对啊!
作者: 来自沙沙的我    时间: 2014-5-31 16:08
  可是为什么会是那样的结果呢?
作者: 来自沙沙的我    时间: 2014-5-31 16:10
没壳的蜗牛 发表于 2014-5-30 23:13
读了两次啊!一次没有打印,一次打印,当然会出现不对啊!

恩,是这样。谢谢啊。
作者: 来自沙沙的我    时间: 2014-5-31 16:13
谢谢大家的回复。确实是那样。

每次while循环都读取了两次,而i只是被赋值了第二次,所以本来的四次赋值变成了只有第二次和第四次。




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