do
{
ch = (char)System.in.read();
System.out.print(ch);
}while(ch != '\n');
我认为这个循环会重复,直到我输入一个新行?不知道我做错了什么,因为它在我输入一个字符后终止。
do
{
ch = (char)System.in.read();
System.out.print(ch);
}while(ch != '\n');
我认为这个循环会重复,直到我输入一个新行?不知道我做错了什么,因为它在我输入一个字符后终止。
输入第一个字符后,while 循环条件会成功,它会在 do-while 中等待用户输入。如果您enter
现在按下它的换行符,在这种情况下,while 条件将失败。简而言之,您的代码按预期工作。
测试:
aa(if you press enter key now)
while condition failed.
您的程序可以运行,但在您按下 之前,您的循环并没有真正开始enter。
System.in.read
在控制台输入换行符之前的块。因此,如果您按 键a b c \n,程序将在System.in.read()
-line 上停止,直到您按enter( \n
)。
按下时enter,您的程序将启动并将该行回显给用户。
造成这种情况的原因是您的控制台的配置方式。通常,终端处于“cooked”模式,这允许您使用退格键并编辑您输入的字符。您还应该能够将控制台设置为“raw”模式(绕过行编辑并且不需要回车键)。这可能会产生你想要的结果。在 UNIX 系统上,“stty”命令可以改变模式。
尝试这个
而(通道!= 13);
13是enter的ASCI值