2013-02-04 41 views
0

簡單PROGRAMMJava的DataInputStream所使用與System.in

DataInputStream in = new DataInputStream(System.in); 
    while(true) 
     System.out.println(in.readUTF()); 

行爲不有點怪異:它拒絕輸出在輸入的文字...我用端子輸入一些文本,但沒有什麼輸出。它出什麼問題了?

回答

3

這並不奇怪。 readUTF需要非常具體的長度前綴格式,如DataOutputStream所寫。這不是你的終端將提供的。有關更多詳細信息,請參閱DataInput.readUTF中的文檔。

通常你應該只使用一個Scanner或創造大約就在InputStreamReader周圍System.inBufferedReader,並使用BufferedReader.readLine()

2

DataInputStream用於讀取二進制數據。 readUTF需要兩個字節的無符號長度,後跟UTF-8中的字符。 (如果您無法訪問,您可以閱讀它的文檔提示,提示)

我懷疑您打算使用的是掃描儀,它是專爲閱讀文本而設計的。

Scanner in = new Scanner(System.in); 
while(in.hasNextLine()) 
    System.out.println(in.nextLine()); 
0

你可以嘗試像

String str; 
while((str = in.readUTF()) != null) { 
    System.out.println(str); 
}