После того, как осталось больше элементов для чтения, вы Scanner
получите исключение, которое вы видите. Прямо сейчас вы продолжаете цикл, пока можете прочитать файл, но это не влияет на то, где Scanner
находится файл. Scanner
предоставляет семейство функций , чтобы проверить правильность следующих лексем: hasNext()
, hasNextInt()
, hasNextLine()
и т.д. Вы должны использовать их вместо того, чтобы :
while( input.hasNext() ) {
String code = input.next();
// ...
}
Однако, если у вас есть искаженный файл, вы по-прежнему можете получить исключение по аналогичным причинам, считая часы и титры. Вы можете обработать их, проверив сканер перед их чтением или, возможно, в обработчике исключений, поскольку это, вероятно, указывает на большую проблему, например, чтение неподдерживаемого или поврежденного файла.