Программа также воспроизводится с небольшими файлами, например:
1
2
3
Программа вводит бесконечный l oop, когда последняя строка файла пуста. Плохая часть такова:
Scanner s1 = new Scanner(new File(file));
while (s1.hasNextLine())
{
ctr = ctr + 1;
if (s1.hasNext())
{
s1.next();
}
}
Если вы находитесь перед пустой строкой, то s1.hasNextLine()
- это истина, а s1.hasNext()
- ложь. Таким образом, вы не читаете следующий элемент. Тогда в следующей итерации l oop, s1.hasNextLine()
все еще имеет значение true, и, следовательно, l oop никогда не заканчивается.
Кстати, вы никогда не должны перехватывать исключения, не обрабатывая их. Вы должны хотя бы вывести сообщение об ошибке, а затем вызвать e.printStackTrace()
.