2011-05-29 62 views
0

我有一個InputStream(東東是什麼用戶鍵入到CONSOL,System.in.read();)只讀第一個輸入流?

現在我想以後把這個InputStream的成字符串時,它看起來就像這樣:

InputStream input = System.in; 


    StringBuffer out = new StringBuffer(); 
    byte[] b = new byte[4096]; 
    for (int n; (n = input.read(b)) != -1;) { 
     out.append(new String(b, 0, n)); 
    } 

    System.out.println(out); 

我知道有很多更好的方法。但我想完成這一個。唯一的問題是!= -1,它永遠不會發生。什麼是輸入的int?所以我爲了結局。

Thx!

+0

在此作業中是否允許使用'Scanner'或'BufferedReader'? – BalusC 2011-05-29 22:12:42

+0

是的。我嘗試了緩衝式閱讀器,但同樣的問題。我可以說readLine(),但它永遠不會結束... – Lillipo 2011-05-29 22:19:48

回答

0

通常[CONTROL] + [d]將結束輸入您的應用程序,它應該返回你-1的方法調用。根據操作系統的不同,您可能需要再次嘗試[ENTER],然後按[CONTROL] + [D]和[ENTER]。

+0

是的,就是這樣!我只需要CONTROL + D並結束(-1) – Lillipo 2011-05-30 06:52:31

0

它應該是取決於操作系統的10或13個值之一。

+0

不工作:/我使用Linux的x64 – Lillipo 2011-05-29 22:20:11

+0

根據[這aritcle](http://www.velocityreviews.com/forums/t146788-how-do-i -detect-if-the-user-has-press-the-enter-key.html)你無法正確識別 – Ali1S232 2011-05-29 22:28:04

2

這是關於標準的方式來做到這一點

Scanner scan = new Scanner(System.in); 
String line = scan.nextLine(); 
+0

我知道但我想用字符串作爲輸入流,後來我想讀這個輸入流並且把它當作一個字符串... – Lillipo 2011-05-29 22:40:13