import java.io.*;public class CharArrayReaderDemo{
  public static void main(String args[]) throws IOException{
    String s="abcdefghijklmnopqrstuvwxyz";
    int a=s.length();
    char c[]=new char[a];
    s.getChars(0,a,c,0);
    CharArrayReader in1=new CharArrayReader(c);
    CharArrayReader in2=new CharArrayReader(c);
    int i;
    while((i=in1.read())!=-1){
      System.out.print((char)i);
    }
    System.out.println();
    while((in2.read())!=-1){
      System.out.print((char)(in2.read()));
    }
  }
} in1和in2读取的怎么不一样啊?

解决方案 »

  1.   

    while((in2.read())!=-1){
    System.out.print((char)(in2.read()));
    }
    }
    } 你读的是第2、4、6、8.....个字符
      

  2.   

    in2.read()怎么能读的是2 4 6 字符呢
      

  3.   

    你如果给in2也赋个值就是一样的。 给你分析一下。
     while((in2.read())!=-1){     \\第一次进入:in2.read()=a
          System.out.print((char)(in2.read())); \\这里又进行一次read。输出in2.read()=b
        }
    所以最后b值 应为 bdfhjlnprtvxz
      

  4.   

    应该说你判断时读的是单数位的字符,打印时是偶数位的字符,明白? 你的while循环中判断读了一次,打印又读了一次
      

  5.   

    in2.read()每调用一次就自动向后移一个字节。
    解决办法:
    while((in2.read())!=-1){
          System.out.print((char)(in2.read()));
    改为:
    byte temp;
    while((temp=in2.read())!=-1){
          System.out.print((char)temp);