InputMismatchError при сканировании номера - PullRequest
0 голосов
/ 29 мая 2020

При попытке прочитать число, используя приведенный ниже код, генерируется InputMismatchError:

Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {

    long number = sc.nextLong(); // Error here

    if (number % 2 == 0 && number != 0) {
        System.out.println("even");
    } else if (number % 2 != 0 && number != 0) {
        System.out.println("odd");
    } else if (number == 0) {
        System.out.println("");
    }
}

Не понимаю, где ошибка. Скомпилированная программа Eclipse без ошибок.

Ниже приведен ввод с консоли

1234,5

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Вы можете сделать это так

Scanner scan = new Scanner(System.in);
long val = scan.nextLong();
System.out.printf(String.valueOf(val));

пока вы ожидаете долго, вы должны передать недесятичное число c значение из командной строки.

0 голосов
/ 29 мая 2020

Если входные данные могут содержать некоторые нецелые числа со значениями, вы должны проверить, является ли следующее значение long. Если нет, игнорируйте:

while (sc.hasNext()) {
    // Check if next is a long
    if (sc.hasNextLong()) {
        long number = sc.nextLong();

        if (number == 0) {
            System.out.println("");
        }
        else if (number % 2 == 0) {
            System.out.println("even");
        }
        else {
            System.out.println("odd");
        }
    }
    else {
        // Not a long, consume rest of line.
        // You might need to change this to sc.next() depending on requirements
        sc.nextLine();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...