Небольшое объяснение ответа @ thewho69.
Вы попали в ловушку побочных эффектов. Метод может не только делать то, что подсказывает его имя. В этом примере метод readLine()
не только читает предстоящую строку, но также устанавливает позицию курсора в начале следующей строки.
Это делает метод readLine
не идемпотентным, что означает, что вызов метода дважды с одинаковыми параметрами (в данном случае ни одного) не обязательно вернет один и тот же результат.
Чтобы не попасть в эту ловушку, вы должны найти способ использовать текущую одну строку несколько раз, при этом вызывая метод br.readLine()
только один раз - таким образом, установить позицию курсора только один раз в итерации, что желательно в этом случае. Хорошее решение этой проблемы - то, что @wwho69 предложил ~ 20 минут назад.