【发布时间】:2017-04-06 12:12:21
【问题描述】:
class E92StringDemo {
public static void main(String args[]) throws java.io.IOException {
String strObj1 = "First String";
for (int i = 0; i < strObj1.length(); i++) {
System.out.print(strObj1.charAt(i));
System.in.read(); //just to pause the execution till i press enter key
}
}
}
我希望输出如下:
F
i
r
s
t...
但输出如下:
F
ir
st
S
tr
in
g
我不知道为什么每次按下enter 键(\n)都会在一行中显示 2 个字符?
我正在运行 windows 8 并使用命令提示符使用javac 运行文件。
【问题讨论】:
-
您在什么操作系统上运行?如果您在 Windows 上运行,则 enter 是回车换行,即“\r\n” - 两个字符。
-
@JonSkeet 它在 window 上工作正常,刚刚测试过
-
@JonSkeet 我在 Linux Mint 上进行了检查,它工作得很好。在按下
enter之后,它会一个字母一个字母地进行。 -
@user3260381 这是因为当你按下回车键时,就像 Jon 在 Windows 中已经指出的那样,你正在生成两个字符:回车符
\r和换行符\n允许System.in.read()执行两次。 -
@XtremeBaumer 是什么让您认为它被跳过了?在循环开始时,我们打印第一个字符,然后等待用户输入,即回车键,因此控制台将光标移动到下一行,但在标准输入中我们有两个字符,所以现在
System.in.read()将读取两次,允许两次迭代(单行中的两个字符)。当不再有字符时,进程等待用户输入,当用户再次按 Enter 键时,我们将移至下一行,标准输入再次有\r\n可以读取。