为什么在 cin.read() 请求另一个输入之前有 4 个空格?



当我从"System.out.println"中删除"ln"时,cin.read((要求我在下一行输入,但是当我放回"ln"时,在它问我另一个输入之前有4个空格,为什么?

InputStreamReader cin = new InputStreamReader(System.in);
char c;
do {
c = (char) cin.read();
System.out.println(c);
} while(c != 'q');
InputStreamReader

不是为从System.in的客户端输入中读取字符而设计的。 它是从字节到字符的桥梁。
InputStreamReader.read()确实会逐个字节读取,包括那些表示由 enter 类型生成的行分隔符的字节。
因此,当您输入标准输入例如x然后单击Enter时,根据您的操作系统读取2或3个字节并将其解码为字符。xrn适用于基于Windows操作系统,
xn适用于基于Unix操作系统。
当您注意到 4 个断行(3 个用于读取字节 + 1 个在您键入输入触摸后自动添加(时,您很可能在 Windows 上。

要从 std 输入中读取文本,Scanner更合适,例如:

Scanner cin = new Scanner(System.in);
String word;
do {
word = cin.next();
System.out.println(word);
} while (!word.equals("q"));

相关内容

最新更新