next()
даст вам следующий токен, а не следующую строку. так что переменная i
может идти после десяти. вы бы поняли это, если бы у вас не было пустого улова: ваш массив выходит за границы
Решение:
не использовать массив результатов, использовать список результатов и добавлять к его концу всякий раз, когда у вас есть другой результат
Примечание:
еще одно скрытое исключение, которое может возникнуть, когда ваш parseInt завершается сбоем из-за нечисловых данных. Так что не оборачивайте все в гигантскую попытку / ловлю, это только усложняет отладку!