Попросить пользователя ввести рекурсивное значение между определенным диапазоном в JAVA? - PullRequest
0 голосов
/ 27 сентября 2019

Я пишу код на 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;
}

} `

Это будет мой вывод: Output Image

Проблема, с которой я сталкиваюсь,когда я ставлю неправильные значения и, в конечном итоге, когда я ставлю правильное значение, он напечатает значение, которое я ввел во второй раз.Допустим, я помещаю 8 значений, выходящих за пределы диапазона, и после этого мое 9-е значение находится в пределах диапазона, поэтому будет напечатано значение, введенное во второй раз.

1 Ответ

0 голосов
/ 27 сентября 2019

Вы пропустили небольшую деталь:

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.

...