2014-08-28 52 views
0

因此,我正在研究一個程序,該程序將使用Scanner讀取文本文件並計算單詞,句子等的數量。我的代碼有效,但僅在某種程度上這讓我很困惑。我有這兩個類,如何多次使用hasNext

public void sentences() 
{ 
    while(text.hasNext()) 
    { 
     // code to check for and count sentence ends 
    } 
} 

public void words() 
{ 
    while(text.hasNext()) 
    { 
     // code to count for words 
    } 
} 

令人困惑的(對我來說)部分是當我運行這兩種方法他們的工作。但是,(順序無關緊要)第二個不起作用。所以,如果我寫

w.words(); 
w.sentences(); 

句子方法將什麼都不做,給我的值爲0。我已經做了一些測試用的System.out.println()和句子方法將被調用,但它會跳過循環。所以我覺得有一些與hasNext()方法有關。有什麼想法嗎?

回答

0

hasNext返回false時,words中的循環結束。除非您在致電sentences之前執行某些操作,否則它將在此處返回false,並且永遠不會進入循環。