关于java的问题,两个方法为什么会有区别呢??

来源:百度知道 编辑:UC知道 时间:2024/06/14 01:23:40
public static void trans(InputStream in,OutputStream out) throws Exception
{
int c=0;
while((c=in.read())!=-1)
{
int B=Character.toUpperCase((char)c);
out.write(B);
}
}
public static void trans(InputStream in,OutputStream out) throws Exception
{

while(in.read()!=-1)
{
int B=Character.toUpperCase((char)in.read());
out.write(B);
}
}

当然有区别了,in.read函数每读取一个整数,都会把流当前位置指向下一个整数,所以调用两次in.read将读取两个数据,返回值是不同的,所以第二种写法是错的。

在while(in.read()!=-1)语句中in.read读取的数据不是下面Character.toUpperCase中in.read读取的数据,在Character.toUpperCase中的in.read读取了下一个数据。所以在while语句中读取的数据就丢失了。