Фильтрация ввода java.util.Scanner?

Я использую java.util.Scanner и хочу отфильтровать пользовательский ввод, если он выходит за пределы диапазона, например, принять только 0, 1, 2 или 3. Возможно, что-то вроде:

if !(sc.hasNextInt 0,1,2,3

Я знаю, что это недопустимый синтаксис, но я хотел показать, к чему я стремился. Как мне сказать Java не хранить пользовательский ввод, который не соответствует моим критериям?


person Charlie CatLitter    schedule 30.12.2013    source источник


Ответы (2)


Это то, что вы должны реализовать сами — это не то, что Scanner поддерживает. Типичный способ - иметь какой-то цикл, подобный этому:

int input;
do {
    input = sc.nextInt();
} while (input < 0 || input > 3);
person Ismail Badawi    schedule 30.12.2013

person    schedule
comment
Пожалуйста, опубликуйте причины для отрицательного голосования, чтобы я мог улучшить свои ответы в будущем.. :) - person TheLostMind; 30.12.2013
comment
(PS: я не против) Возможной причиной отказа может быть то, что вы несколько раз вызываете sc.nextInt() в операторе if, что неверно. Вы должны вызвать sc.nextInt() один раз, сохранить возвращаемое значение в переменной и использовать его для сравнения в операторе if. - person Infinite Recursion; 30.12.2013