2014-03-27 22 views
0

我想寫一個方法,打印出用戶輸入字符的任何字符附加前一個字符,因爲他進入和拋出當他按下輸入時是一個例外。我寫了下面的代碼,但是當我輸入時,它追加了我寫過的任何字符,並且不會拋出異常。我會感謝您的幫助和建議。如何打印字符作爲用戶輸入他們在控制檯中,並停止時,用戶輸入輸入字符java

public static void inputM(StringBuffer a) throws EntExc, IOException{ 
       char c; 
     String m; 
    while(true){ 
     Scanner s = new Scanner(System.in); 

     m=s.next(); 
     c=m.charAt(0); 

     if(c=='\r'){ 
      throw new EntExc(); 
     } 
     System.out.println(a.append(m)); 
    } 
} 
+1

可能的重複[如何從Java控制檯讀取單個字符(用戶鍵入它)?](http://stackoverflow.com/questions/1066318/how-to-read-a-single- char-from-the-the-console-in-java-as-the-the-user-type-it) –

+1

這裏是你需要的東西http://ideone.com/KXmybg –

+0

是的這一個工程。謝謝! – Nat

回答

0

這裏有幾個問題。第一個s.next()獲取一個以空白分隔的標記並將整個標記作爲單個字符串返回。其次,因爲Scanner使用空格作爲分隔符,它將永遠不會返回\r,它只會跳過它並讀取下一個標記。

爲什麼不使用s.readLine()而只是回顯整條線?雖然它不會在輸入字符時處理字符(Scanner無法真正做到這一點,但它總是緩衝行),它將更接近您描述的要求。

+0

另請參閱:http://stackoverflow.com/questions/1066318/how-to-read-a-single-char-from-the-console-in-java-as-the-user-types-it?lq= 1 –

+0

謝謝!是的,這確實使它更好,但仍然,是不是有一種方法來actullay打印他們char字符,而不是逐行? – Nat

+0

感謝您的鏈接。但是當我做readline時,它似乎沒有得到'\ r'字符。我怎麼才能知道用戶按下Enter鍵呢? – Nat

相關問題