У вас есть пустая строка в конце файла.
Если вы берете контент и сохранить его, например, в txt-файл, некоторые редакторы добавят пустую новую строку в ваш файл.
Редакторы ведут себя таким образом, потому что это часть POSIX Стандарт:
3.206 Линия
Последовательность из нуля или более символов без символа окончания.
Этот раздел был обсуждался в этот поток .
Документация по Java-сканеру
Вот документация из класса g2 для Java 8 Scanner .
hasNext()
Возвращает true, если этот сканер имеет другой токен на своем входе.
hasNextLine()
Возвращает true, если на входе этого сканера есть еще одна строка.
Причина поведения кода Java
Из-за вышеописанных фактов
hasNextLine()
returntrue
, ноhasNext()
не может найти ничего, что он может распознать какToken
и поэтому возвращаетfalse
.Для дополнительной информации см. durron597 post.