Почему этот код запускает бесконечный цикл?

Я пишу простой код для анализа файла и возврата количества строк, но маленькое красное поле в eclipse не срабатывает, поэтому я предполагаю, что запускаю бесконечный цикл. В текстовом файле, который я читаю, всего 10 строк... вот код: Что я делаю неправильно?

import java.io.*;
import java.util.Scanner;
public class TestParse {    
    private int noLines = 0;    
    public static void main (String[]args) throws IOException {
        Scanner defaultFR = new Scanner (new FileReader ("C:\\workspace\\Recommender\\src\\IMDBTop10.txt"));
        TestParse demo = new TestParse();
        demo.nLines (defaultFR);
        int x = demo.getNoLines ();
        System.out.println (x);
    }   
    public TestParse() throws IOException
    {
        noLines = 0;
    }
    public void nLines (Scanner s) {
        try {
            while (s.hasNextLine ())
                noLines++;
        }
        finally {
                if (s!=null) s.close ();
        }
    }
    public int getNoLines () {
        return noLines;
    }           
}

person algorithmicCoder    schedule 20.03.2011    source источник


Ответы (2)


Вы не вызываете s.nextLine() в цикле while:

должно быть:

        while(s.hasNextLine()){
           s.nextLine(); // <<<
            noLines++;

          }
person typo.pl    schedule 20.03.2011
comment
Большое спасибо!... Небольшое недосыпание, что было довольно глупым упущением... Еще раз спасибо! - person algorithmicCoder; 20.03.2011

Вы проверяете только hasNextLine в своем цикле. Это проверяет наличие другой строки, но не читает ее. Пусть за ним следует nextLine, и ваш код будет работать.

while(s.hasNextLine()){
    s.nextLine();
    noLines++;
}
person Howard    schedule 20.03.2011