Не понимаю почему валидатор не принимает такое решение. Метод readString() написан идентично readInt() и при этом принят. Метод выполняет необходимое, т.е. вывод System.out.println(ConsoleHelper.readInt()); выглядит следующим образом:
nan
Произошла ошибка при попытке ввода числа. Попробуйте еще раз.
5
5

Process finished with exit code 0
P.S. Вывод с переносом от отсутствия здравых идей. Первая попытка была с нормальным сообщением и таким же результатом. Пока в циклах не переписывал т.к. это будет выглядеть хуже и принесет психологический диссонанс) Дополнение: написал через цикл в виде
public static int readInt(){
    int out;
    while (true) {
        String in = readString();
        try {
            out = Integer.parseInt(in);
            return out;
        } catch (NumberFormatException ignore) {
            System.out.println("Произошла ошибка при попытке ввода числа. Попробуйте еще раз.");
        }
    }
}
вывод такой же, результат такой же, непонятно.