public class demo
     {
 public void static void main(String[] args)
{
int c; 
BufferedInputStream bi = new BufferedInputStream(System.in);
byte[] b = new byte[5];
while ((c = bi.read()) != -1)

System.out.print((char)c); 

              }
            } 
             为什么我在输出c时,必须要把其强制转换为char型才能得出正确的结果呢,比如我从 键盘键入5,输出的才能为5,如果不转换,即System.out.print(c); 那么会得到531310。请问各位高手这是为什么啊?

解决方案 »

  1.   

    import java.io.*;
    public class demo
         {
     public static void  main(String[] args)
    {
    int c; 
    try{BufferedInputStream bi = new BufferedInputStream(System.in);
    byte[] b = new byte[5];
    while ((c = bi.read()) != -1)

    Character d=new Character((char)c);    //1
    Integer e=Integer.valueOf(d.toString());//2
    int f=e.intValue();       //3
    System.out.print(f);    //4

    }
    catch(IOException e){
    }
                  }
                } 123 注释掉的话 把4改成System.out.print((char)c);  运行可以输入5输出5不过5 是字符型de

    1234句都不改动的话 输出的时候已经转变成了int型
    笨方法  lz满意不
    拿分来 呵呵
      

  2.   

    import java.io.*;
    public class demo
         {
     public  static void main(String[] args) throws Exception 
    {
    int c; 
    BufferedInputStream bi = new BufferedInputStream(System.in);
    byte[] b = new byte[5];
    while ((c = bi.read()) != -1)

    System.out.println(c); 

                  }
                } 
    在命令行输入:a
    输出结果:97
    13
    10
    可以看出:97是a的asii码值
    13是回车\r,10是换行\n
    在windows平台按下回车时会产生:\r\n
    在unix平台按下回车时会产生:\n
      

  3.   

    \r\n
    是不可显示的,当你转换字符后,你输入的字符 如a 可以正常显示,回车换行就不显示了
      

  4.   

    char可以自动转换成int,但int必须强制转换到char,因为int的表示范围比char大,系统要防止溢出。
    本例中,读到的C为int,输出前当然要强制转换为char