2013-02-20 77 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'命令可以改變模式。

相關問題