2013-02-20 116 views
0
do 
{ 
    ch = (char)System.in.read(); 
    System.out.print(ch); 
}while(ch != '\n'); 

我以为这个循环会重复,直到我输入一个新的行吗?不知道我做错了什么,因为它输入一个字符后终止。不明白为什么这个java做循环不工作

+8

in.read()它自动发生\ n'。当你输入 – smk 2013-02-20 22:17:35

+1

这可能很容易通过调试解决,甚至仔细查看输出。 – 2013-02-20 22:19:26

回答

0

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

测试:

aa(if you press enter key now) 
while condition failed. 
-1

试试这个

而(!CH = 13);

13是的ASCI值进入

0

你的程序工作,但你的循环就在按之前进入没有真正开始

System.in.read阻塞,直到在控制台输入换行符。所以,如果你按下键一个bÇ\ n,程序将停止在System.in.read()直插,直到你按下进入\n)。

输入被按下时,您的程序将会启动并向用户回送该行。

原因是您的控制台配置。通常情况下,终端处于“熟化”模式,这允许您使用退格键和编辑您输入的字符。您还应该能够在“原始”模式下设置控制台(线路编辑绕过,不需要输入密钥)。这可能会产生你以后的结果。在UNIX系统上,'stty'命令可以改变模式。