那是3的ASCII码值
你给ch-48即可

解决方案 »

  1.   

    输出的是ASCII码对应的值,如果你把ch1的类型改成char类型就对了,就是一个字符了。
      

  2.   

    我改了程序:
    class Input
    {
    public static void main(String[] args) 
    {
    char ch1=1;
    try
    {
    ch1=System.in.read();
    }
    catch(Exception e)
    {
    System.out.println("cannot read");
    }
    System.out.println(ch1);
    }
    }
    错误如下:
    input.java:8: possible loss of precision
    found   : int
    required: char
                            ch1=System.in.read();
                                              ^
    1 error
      

  3.   

    直接用System.in.read好象不是读数据的正确方式,它只读了输入的第一个字符,而且好象把它重编码了然后返回,所以你看到的是两个字符
      

  4.   

    class Input
    {
    public static void main(String[] args) 
    {
    int ch1=1;
    char c=0;
    try
    {
    ch1=System.in.read();
    c=(char)ch1;
    }
    catch(Exception e)
    {
    System.out.println("cannot read");
    }
    System.out.println(c);
    }
    }
      

  5.   

    InputStreamReader isr=new InputStreamReader(System.in);
          char[]a=new char[10];
          isr.read(a);
          System.out.println(new String(a));