Как в Java обрабатывать введенное в консоль в реальном времени, то есть прямо во время ввода и выбрасывать исключение, если ввод неверный?

Мне нужно реализовать ввод данных в Java таким образом, что исключение будет выбрасываться даже без нажатия Enter для конца ввода, то есть моментально. Пытался что-то искать на эту тему, все тщетно, не понимаю, как можно добиться этого


Ответы (1 шт):

Автор решения: Nowhere Man

Класс Scanner может обрабатывать значения в потоке ввода и проверять наличие соответствующих токенов до того, как будет введена строка целиком.

Например, для ввода "слова" длиной не более 10 символов можно применить код:

Scanner sc = new Scanner(System.in);

String name = sc.next("\\S{1,10}"); // От 1 до 10 непробельных символов

При вводе любого пробела после ввода слишком длинного слова будет выброщено исключение:

123451234512 Exception in thread "main" 1java.util.InputMismatchException
    at java.base/java.util.Scanner.throwFor(Scanner.java:939)
    at java.base/java.util.Scanner.next(Scanner.java:1594)
    at java.base/java.util.Scanner.next(Scanner.java:1525)
    at MyClass.main(MyClass.java:11)
→ Ссылка