Я пытаюсь сделать функцию java, которая возвращает введенный пользователем int
, но не вернется, пока пользователь не введет действительный номер. Вот моя первая модель функции:Функция Java для ввода данных от сканера до int?
public int getChoice(){
try{
return scan.nextInt();
}catch(Exception e){
return getChoice();
}
}
scan
объявлен Scanner scan = new Scanner(System.in);
Эта функция привела в Java.lang.stackOverflowError
(хмм ... это, кажется, соответствующий веб-сайт для этого ...). Я полагаю, это потому, что функция постоянно называется.
Я как-то подумал, используя Integer.valueOf(scan.nextLine())'
, но причина, по которой я на самом деле ничего не сделал с этим, заключается в том, что в некоторых случаях я не могу понять, что определяет, происходит это или нет, но нажатие «Enter» когда программа вызывает nextLine()
, пропустит следующий nextLine()
. Я не могу разобраться в этом.
Итак, если кто-то может предоставить мне функцию Java, которая будет зацикливаться до тех пор, пока пользователь не вводит действительное целое число, а затем верните это целое число, пожалуйста, сделайте это, спасибо.
Вы можете переписать код без рекурсии, чтобы увидеть, что происходит: вставить его в 'то время (правда)' петли и удалить вызов 'getChoice()' - возвращение будет разорвать петлю, и если есть исключение просто повторится. – John3136