static int prompt(set x) {
Scanner input = new Scanner(System.in);
do {
System.out.println("Please enter an integer within the specified range.");
while (!input.hasNextInt()) {
System.out.println("Please enter a valid integer.");
input.next();
}
System.out.println("input received");
x.setVal(input.nextInt());
} while (x.getVal() <= x.getlLim() || x.getVal() > x.getuLim());
input.close();
return x.getVal();
}
Предполагается, что этот метод ограничивает ввод данных пользователем определенным пользователем диапазоном целых чисел, но он продолжает цикл внутри цикла do{...}while(...)
, даже когда я ввожу действительные числа. Ему передается статический класс set
, который инициализируется конструктором. Вот соответствующие фрагменты кода:
set
конструктор:
set(int val, int uLim, int lLim) {
this.val = val;
this.uLim = uLim;
this.lLim = lLim;
}
Инициализация set
:
set max = new set(0, 1, 99);
Затем я перехожу к prompt(max)
, но он продолжает говорить мне: «Пожалуйста, введите ... указанный диапазон», хотя я ввожу действительное целое число, например 60, 55 или 10. Есть ли проблемы с циклом или я что-то делаю не так в другом месте ?
Кажется, я не мог понять этого, пытался использовать регулярные выражения, блоки try-catch и parseInt в качестве альтернативы, но в итоге получил разные ошибки, поэтому я вернулся к этому простейшему методу регулирования пользовательского ввода ...