System.out.println( System.in.read() );
a被看做两个字节,高位为0低位为97(十进制),
以字节流方式读入后应当只读入了高位0,
那为什么输出结果是97,而不是0呢?

解决方案 »

  1.   

    to a_nuo() :
    程序如下:
       System.out.println( System.in.read() );
       System.out.println( System.in.read() );
    运行时,如果输入a再回车,
      第一次读入的输出结果 为97即a的unicode码
      第二次读入的输出结果 为13即回车符的unicode码
      奇怪的是字符a的高位没有输出,为什么?
    麻烦大家了!
      

  2.   

    println(int)print all (hight + low)
      

  3.   

    不理解 为什么  输入  a 回车 会输出  97 13   高手 给我解决一下呀
    public class Send
    {
    public static void main(String[] args)
    {
    try
    {
    System.out.println( System.in.read() );
    System.out.println( System.in.read() );
    }
    catch (Exception e ){};
    }
    }
      

  4.   

    把a转型为int型了,如果要输出字符a,那得用System.out.println((char)System.in.read());强制把97转换成字符。
      

  5.   

    你输入a后面按了回车键当然流中会存在两个字节而read()每次读入一个字节,那下一次读入自然就是读入回车键了,
    当我们用键盘输入字符时,并不是按java的 unicode来对字符编码,而是按照本机的默认字符集来进行编码,比如我们中文操作系统都是gbk---大伙说对不对,关注..
      

  6.   

    对。
    读入的字符会被转为unicode。
    但是使用read,返回的是读入的一个字节,这个字节是标准输入流提供的,所以读入的是a的ascii码(或者说是操作系统内码吧)。
    使用read时,要等到输入按下回车后才能读出数据,而回车会根据操作系统不同而被读成\r\n或者\n,也就是13 10或者10。
    所以第二次read读出了13。