可将程序如下修改:
public class Stream {
public static void main(String[] args){
byte[] b=new byte[] {'a','b','c','d'};
ByteArrayInputStream in=new ByteArrayInputStream(b);
int i=0;
while(( i=in.read())!=-1){//楼主这儿用了一次in.read
char x=(char)i;//这儿不应该再用一次in.read(),否则他会再向下读一次,返回条件判断中read到的数的下一个数据。
System.out.println(x);
}
}
}
楼主的程序会这样执行,循环开始,读到第一个a不为-1,则读a的下一个b,并打印;接下来该读到c也不为-1,则向下读到c的下一个d,并打印。所以结果会是:b d(原因是楼主程序并未要求打印a c) |