Просить пользователя ввести значение между определенным диапазоном рекурсивно в JAVA?
Я пишу код на Java, где система попросит пользователя ввести целое число от 1 до 10 (оба включены), и если значение выходит за пределы допустимого диапазона, он должен рекурсивно попросить пользователя ввести значение еще раз. И в конце я должен вывести значение, которое было в пределах диапазона. Вот мой код:
ʻImport java.util.Scanner;public class InputInteger {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Enter first Integer between 1 and 10 (both inclusive):");
Scanner sc = new Scanner(System.in);
int num1 = isInRange(sc, sc.nextInt());
System.out.println("Enter Second Integer between 1 and 10 (both inclusive):");
int num2 = isInRange(sc, sc.nextInt());
System.out.println("Num 1 is "+num1+"\nNum 2 is "+num2);
sc.close();
}
public static int isInRange(Scanner scanner, int num) {
if(num<1 || num>10) {
System.out.println("WRONG INPUT. PLease enter Integer between 1 and 10 (both inclusive):");
num =scanner.nextInt();
isInRange(scanner, num);
}
return num;
}
}`
Проблема, с которой я сталкиваюсь, заключается в том, что когда я устанавливаю неправильные значения, и, в конечном итоге, когда я устанавливаю правильное значение, он напечатает значение, которое я ввел во второй раз. Скажем, я помещаю 8 значений, которые находятся за пределами диапазона, и после этого мое 9-е значение находится в пределах диапазона, поэтому он напечатает значение, которое было введено во второй раз.
1 ответ
Вы упустили небольшую деталь:
public static int isInRange(Scanner scanner, int num) {
if(num<1 || num>10) {
System.out.println("WRONG INPUT. PLease enter Integer between 1 and 10 (both inclusive):");
num = scanner.nextInt();
num = isInRange(scanner, num); // add "num = " at the beginning of the line
}
return num;
}
isInRange () возвращает целое число, которое вы забыли установить на num.