2014-08-28 99 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,并且永远不会进入循环。