System.in.read()
用于阅读单个字符。
那为什么它允许用户输入尽可能多的字符,直到他按下回车键?
为什么一按下按键并返回角色就不会停止?
char ch = (char)System.in.read();
如果用户输入“example”然后按回车键,则ch
为e
。并丢弃其他字符。
如果有多个read()
,那就会让整个事情变得混乱。
那么,为什么不只采用单个字符然后返回?
答案 0 :(得分:0)
System.in
的类型为BufferedInputStream
。这种类型的流缓存输入数据,直到识别出换行符。以下代码段显示输出中的类型。
System.out.println(System.in.getClass());
答案 1 :(得分:0)
如果有多个read(),它会混淆整个事物 那么,为什么不只采用单个字符然后返回呢?
要解决此问题,您可以打包标准输入并使用Scanner
进行阅读。
对于给定的输入:
ABCD
1234
以下Scanner
代码会选择字符a
和1
。
// 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();