无法理解此java do while循环不工作的原因

无法理解此java do while循环不工作的原因,java,Java,我以为这个循环会重复,直到我进入一个新的行?不确定我做错了什么,因为它在我输入一个字符后终止。在您输入第一个字符后,while循环条件将成功,它将等待dowhile内的用户输入。如果按enter键,则此时将显示一个新行字符,在这种情况下,while条件将失败。简而言之,您的代码按预期工作 测试: do { ch = (char)System.in.read(); System.out.print(ch); }while(ch != '\n'); 试试这个 while(ch!=13

我以为这个循环会重复,直到我进入一个新的行?不确定我做错了什么,因为它在我输入一个字符后终止。

在您输入第一个字符后,while循环条件将成功,它将等待dowhile内的用户输入。如果按
enter
键,则此时将显示一个新行字符,在这种情况下,while条件将失败。简而言之,您的代码按预期工作

测试:

 do
 {
  ch = (char)System.in.read();
  System.out.print(ch);
 }while(ch != '\n');
试试这个

while(ch!=13)


13是enter的ASCI值

您的程序正常运行,但在按enter键之前,循环实际上没有启动

System.in.read
阻塞,直到在控制台输入换行符。因此,如果按a b c\n键,程序将在
系统.in.read()
-行上停止,直到按enter(
\n

当按下enter键时,您的程序将启动并向用户回显该行


原因是控制台的配置方式。通常,终端处于“煮熟”模式,这允许您使用退格和编辑键入的字符。您还应该能够将控制台设置为“原始”模式(绕过行编辑,不需要输入键)。这可能会产生你想要的结果。在UNIX系统上,“stty”命令可以更改模式。

在.read()之后,它会自动\n发生。当您点击enter时,通过调试,甚至仔细查看输出,可以很容易地解决这个问题。
aa(if you press enter  key now)
while condition failed.