Вы читаете три целых, используя scanner.nextInt()
. Поскольку nextInt
не использует пробелы или символы новой строки после считываемого токена, это означает, что, если пользователь вводит число и нажимает клавишу ввода, в потоке все еще остается разрыв строки.
Поэтому, когда вы вызываете nextLine
, позже он просто читает этот разрыв строки и возвращает пустую строку.
Поскольку вызов charAt
для пустой строки приведет к ошибке выхода за границы, вы получите ошибку, которую вы получите.
Чтобы исправить это, используйте next
вместо nextLine
, который будет читать следующее слово (занимая все пробелы перед ним), вместо следующей строки, или дважды вызовите nextLine
Один раз потреблять перевод строки и один раз прочитать фактическую строку.
Вы все равно должны проверить, вводит ли пользователь пустую строку.