package lianxi;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.BufferedReader;public class FI {

public void showinput() throws IOException
{
byte [] b={2,15,67,-1,-9,9};
String s="";
int i;
ByteArrayInputStream bs=new ByteArrayInputStream(b);

while((i=bs.read())!=-1)
s+=(char)i;

System.out.println(s+" ");
bs.close();
}
public static void main(String[] args) throws IOException
{
FI f=new FI();
f.showinput();
}
}
为什么我显示出来的是乱码~~ 正确的应该显示出来2,15,67,-1,-9,9,请高手指点一下 !!!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【goopoolzl】截止到2008-07-12 12:21:19的历史汇总数据(不包括此帖):
    发帖的总数量:9                        发帖的总分数:160                      每贴平均分数:17                       
    回帖的总数量:5                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:9                        结贴的总分数:160                      
    无满意结贴数:1                        无满意结贴分:20                       
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:11.11 %               无满意结分率:12.50 %                  
    敬礼!
      

  2.   

    首先Java的Byte类型取值范围是-127~128,就是说是有符号的8位二进制所以你调用read方法返回的是把二进制转换成的int值,对于-1和-9会转换成int值为255和247,你可以每次输出i看看就知道了如果你想还原为byte就强行转换 (byte)i会输出原始byte数组里的值另外乱码是因为你转成char,而Java里面char对应128个ASCII码值,你输入的这几个数转过来就是是那些你看到的符号没有错,你把输入值改成97~122就知道怎么回事了