read()方法得到的是一个字节流,也就是说你输入“10回车”,得到的是‘1’、‘0’和‘\n’这三个字符,而不是一个int型的数10。
Java没有提供一种输入方法来从键盘读入一个字符串,然后自动转换为相应的数据类型。要做到这个,要自己使用类型包装器来转换。
建议你先好好看看书中关于I/O的介绍。

解决方案 »

  1.   

    实在太谢谢namowen了,能不能问问你的QQ号呀!
      

  2.   

    比如你输入了一个"1",那么read()方法得到的不是一个整数1,而是字符“1”的ASCII码,也就是65,强制转化为int后赋给a,这时a的值是65。
      

  3.   

    我想问的是,在java中,用的是16字节的编码,那么输入的时候,前八位是用read读后,再用read读取,read读的是前八位字节,那么就是0了,强制转换后,不就是0吗,又怎么能是整型值呢?
      

  4.   

    你从Console上读入的是ASCII码 , 需要用Integer.parseInt()转换啊
      

  5.   

    read()读的是低八位,也就相当于ASCII码的值。
      

  6.   

    一个简单的读数例子:
    static String s;
    int i;
    BufferedReader ipt=new BufferedReader(new InputStreamReader(System.in));
    s=ipt.readLine();
    i=Integer.parseInt(s);
    注意,字符串s必须为static,否则不能编译!