2014-08-28 3 views
0

Так что я работаю над программой, которая будет использовать сканер для чтения текстового файла и подсчета количества слов, предложений и т. Д. У меня есть код, который работает, но только в некоторой степени и это меня сбивает с толку. У меня есть эти два класса:Как использовать 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

Петля в words заканчивается, когда hasNext возвращает false. Если вы не сделаете что-либо перед вызовом sentences, он все равно вернет туда ложь и никогда не войдет в цикл.

Смежные вопросы