扫描数字时出现 InputMismatchError

InputMismatchError while scanning number

尝试使用以下代码读取数字时生成 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

如果输入的值可能有一些非整数,您应该检查下一个值是否为 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();
    }
}

你可以这样做

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

当您期待很长时间时,您应该从命令行传递非​​十进制数值。