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

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

4

3 回答 3

0

输入第一个字符后,while 循环条件会成功,它会在 do-while 中等待用户输入。如果您enter现在按下它的换行符,在这种情况下,while 条件将失败。简而言之,您的代码按预期工作。

测试:

aa(if you press enter  key now)
while condition failed.
于 2013-02-20T22:21:12.563 回答
0

您的程序可以运行,但在您按下 之前,您的循环并没有真正开始enter

System.in.read在控制台输入换行符之前的块。因此,如果您按 键a b c \n,程序将在System.in.read()-line 上停止,直到您按enter( \n)。

按下时enter,您的程序将启动并将该行回显给用户。

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

于 2013-12-19T05:37:54.210 回答
-1

尝试这个

而(通道!= 13);

13是enter的ASCI值

于 2013-02-20T23:30:32.107 回答