1

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

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

为什么他按下一个键并返回字符时它不停止?

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

如果用户输入“example”,然后按回车,它采用chas e。并丢弃其他字符。

如果有多个read(),它会弄乱整个事情。

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

4

2 回答 2

0

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

System.out.println(System.in.getClass());
于 2015-07-08T08:55:35.343 回答
0

如果有多个 read(),它会弄乱整个事情。
那么,为什么不只取单个字符然后返回呢?

要解决此问题,您可以包装标准输入并改为使用 a 读取它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();
于 2015-07-08T09:19:38.663 回答