проверка состояния l oop со сканером - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь написать код, который будет l oop, если вы предоставите неверные данные. Проблема в том, что мне нужно иметь сообщение типа «Плохие данные» для обоих случаев: - вы вводите не целое число - вы вводите значение ниже 0

В этом коде, если вы вводите букву, он выводит сообщение «Неверные данные», но если вы, например, набираете отрицательное значение, например -10 Плохие данные не отображаются (даже если проверка работает и вам нужно исправить число на положительное)

Как можно Я делаю это более универсальным, поэтому в обоих сценариях ios sysout с печатью на экране Bad data

    Random rand = new Random();
    int los = rand.nextInt(11);
    int NumberOfPlayers ;

    Scanner scan7 = new Scanner(System.in);
    System.out.println(" Type number of players :");

    do {
        while (!scan7.hasNextInt()){
            System.out.println(" Bad data");
            scan7.next();
        }
        NumberOfPlayers = scan7.nextInt();
    }while (NumberOfPlayers < 0);

1 Ответ

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

вы проверяете только если сканер имеет следующий int, вы не проверяете его значение, а целые числа могут быть отрицательными. попробуйте это решение:

    do {
        while (!scan7.hasNextInt()) {
            System.out.println(" Bad data");
            scan7.next();
        }
        NumberOfPlayers = scan7.nextInt();
        if (NumberOfPlayers <= 0) {
            System.out.println(" Number must be larger than zero");
        }
    } while (NumberOfPlayers <= 0);

После проверки следующего int я добавил часть, проверяющую значение предоставленного int.

ТАКЖЕ, пожалуйста, помните о именовании переменных и классов - начните с маленькой буквы, поэтому в ваш случай NumberOfPlayers должен быть numberOfPlayers. Почему вы назвали сканер scan7? есть ли веская причина для этого имени? если нет, вам следует избегать добавления чисел к именам.

...