2013-10-19 16 views
0

我不知道,如果這是一個小白的問題,但在我的代碼:後Scanner.hasNext()

void process() { 
    ... 
    while (input.hasNext()) { 
     \\ DO WHATEVERITNEEDSTODO 
    } 
    out.close(); 
    ... 
} 

它做一切在while語句,但後來不繼續下去因此不關閉。即使當我把System.out.println(「你好你好」)而不是out.close()作爲一個簡單的檢查,它不會打印「你好,你好」

我基本上想要out.close ()發生在我的輸入經歷了一切之後。有沒有另一種方法來做到這一點?

+0

我們將要看到的代碼在'while'不 –

+2

是否'input.hasNext()'曾經返回false?如果沒有,它將永遠留在循環中。 – Gerald

+0

請顯示「input.hasNext()」的代碼。 –

回答

0

the docs for hasNext()「而等待輸入掃描此方法可能阻塞」。我猜想你正在運行一個掃描儀,這種輸入永遠不會結束(比如可能是System.in?)。因此,你會看到循環的主體正在執行,但最終會耗盡要處理的東西,並且它永遠掛起,等待那裏成爲「下一個」或不是。

換一種方式,只是因爲沒有什麼目前可從掃描儀的底層流中讀取,但這並不意味着永遠不會有。只要流保持打開,更多的內容最終可以被讀取。