日期:2014-05-20  浏览次数:20596 次

read()读取键盘数据计算字节的问题
public class CharDecode { 

public static void main(String[] args) throws Exception 
{ System.out.println("please enter a chinese word:"); 
  int ch = 0; 
  while(true) 
  { 

  ch = System.in.read(); 
  System.out.println(ch);
  System.out.println("从这儿"+Integer.toHexString(ch)+"到这儿"); 
  break;
  } 
 }
}
这个读取键盘的输入的数据,我直接按的enter键换行,ch输出的是13,换行是/n/r两个字节,怎么读取的是
13个字节??

------解决方案--------------------
来自百度知道:
System.in返回的是InputStream指向命令行输入的字节流,它的read方法以字节流的方式来读取命令行的输入的数据。

也就是说,输入的字符,以字节流的方式从命令行传递给变量a,因此此时a是一个整数(字节流以整数的方式来表示)。

实际上这个整数是ascii码中对应十进制数(具体可查看ascii码对照表)。
比如输入a,因为a在ascii码中对应的十进制数是97,所以输出的就是97
------解决方案--------------------
探讨
这儿也是从键盘上读取数据,为什么这儿直接点回车键时输出的是2,而不是ASCII值??