do
{
ch = (char)System.in.read();
System.out.print(ch);
}while(ch != '\n');
我以为这个循环会重复,直到我输入一个新的行吗?不知道我做错了什么,因为它输入一个字符后终止。不明白为什么这个java做循环不工作
do
{
ch = (char)System.in.read();
System.out.print(ch);
}while(ch != '\n');
我以为这个循环会重复,直到我输入一个新的行吗?不知道我做错了什么,因为它输入一个字符后终止。不明白为什么这个java做循环不工作
输入第一个字符后,while循环条件会成功,并等待来自do-while用户的输入。如果您现在按enter
它的一个新行字符,在这种情况下while条件失败。简而言之,您的代码按预期工作。
测试:
aa(if you press enter key now)
while condition failed.
试试这个
而(!CH = 13);
13是的ASCI值进入
你的程序工作,但你的循环就在按之前进入没有真正开始。
System.in.read
阻塞,直到在控制台输入换行符。所以,如果你按下键一个bÇ\ n,程序将停止在System.in.read()
直插,直到你按下进入(\n
)。
当输入被按下时,您的程序将会启动并向用户回送该行。
原因是您的控制台配置。通常情况下,终端处于“熟化”模式,这允许您使用退格键和编辑您输入的字符。您还应该能够在“原始”模式下设置控制台(线路编辑绕过,不需要输入密钥)。这可能会产生你以后的结果。在UNIX系统上,'stty'命令可以改变模式。
in.read()它自动发生\ n'。当你输入 – smk 2013-02-20 22:17:35
这可能很容易通过调试解决,甚至仔细查看输出。 – 2013-02-20 22:19:26