扫描号码时出现InputMismatchError

问题描述 投票:-2回答:2

当尝试使用下面的代码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

java java.util.scanner system.in
2个回答
0
投票

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

0
投票

您可以这样操作

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

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

© www.soinside.com 2019 - 2024. All rights reserved.