Использование метода сканера hasNext () для разрешения только набора входов X - PullRequest
0 голосов
/ 17 февраля 2020

Как я могу использовать метод сканера hasNext (), чтобы убедиться, что пользователь выбирает значение только от 1 до 20, а затем использует это значение в качестве строки для возврата в переменную fillSpot? В приведенном ниже коде отсутствует способ проверить, находится ли ввод от 1 до 20. Я также получаю код ошибки fillSpot cannot be resolved to a variable в последней строке возврата. Любая помощь приветствуется!

public String giveInput() {

    Scanner in = new Scanner(System.in);  
int space;


do {
        System.out.println("Enter numerical value between 1 and 20");  
        while (in.hasNext()) {
            String fillSpot = in.nextLine();  
            System.out.printf("\"%s\" is not a valid input.\n", fillSpot);
        }
        space = in.nextInt();
    } while (space < 1 || space < 20);

    return fillSpot;
}

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Вы также можете попробовать это, и в зависимости от ваших требований вы можете вернуть String или Integer.

public static String giveInput() {

    Scanner in = new Scanner(System.in);
    String inputString;
    int inputNumber = 0;

    do {
        System.out.println("Enter numerical value between 1 and 20");
        inputString = in.nextLine();
        try {
            inputNumber = Integer.parseInt(inputString);
        } catch (NumberFormatException e) {
            System.err.println("Please enter a number");
        }

    } while (inputNumber < 1 || inputNumber > 20);

    return inputString;
}
1 голос
/ 17 февраля 2020

Я бы предложил что-то вроде этого:

public String giveInput() {
        Scanner in = new Scanner(System.in);  
        System.out.println("Enter numerical value between 1 and 20");  
        int input=in.nextInt();
        if(input<1 || input>20) {
            System.out.println(input + " is not a valid input.");
        }else {
            // do your work
            System.out.println("Valid Input");
        }
return Integer.toString(input);

}

Дайте мне знать, если это поможет.

...