为什么System.in.read()等到用户按下回车键?

时间:2015-07-08 08:34:43

标签: java console system.in

  

System.in.read()用于阅读单个字符

那为什么它允许用户输入尽可能多的字符,直到他按下回车键?

为什么一按下按键并返回角色就不会停止?

char ch = (char)System.in.read();

如果用户输入“example”然后按回车键,则che。并丢弃其他字符。

如果有多个read(),那就会让整个事情变得混乱。

那么,为什么不只采用单个字符然后返回?

2 个答案:

答案 0 :(得分:0)

System.in的类型为BufferedInputStream。这种类型的流缓存输入数据,直到识别出换行符。以下代码段显示输出中的类型。

System.out.println(System.in.getClass());

答案 1 :(得分:0)

  

如果有多个read(),它会混淆整个事物   那么,为什么不只采用单个字符然后返回呢?

要解决此问题,您可以打包标准输入并使用Scanner进行阅读。

对于给定的输入:

  

ABCD
  1234

以下Scanner代码会选择字符a1

// Local vars init
char ch1 = 0, ch2 = 0;

// Wrap the stdin with scanner
Scanner s = new Scanner(System.in);

if(s.hasNextLine()) ch1 = s.nextLine().charAt(0); // reads "abcd", picks just 'a'
if(s.hasNextLine()) ch2 = s.nextLine().charAt(0); // reads "1234", picks just '1'

System.out.println(ch1 + "," + ch2); // prints a,1

// Close after use
s.close();