【发布时间】:2020-05-29 14:04:42
【问题描述】:
在尝试使用以下代码读取数字时生成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.hasNextLong()) { -
按照 JohnnyMopp 所说的去做并检查是否还有一个 long 可能会更安全,如果没有,则使用下一个单词并打印一条错误消息,告诉用户重新输入 long
-
我输入整数,设置长,因为可能有很大的数字。 hasNextLong() 不起作用
-
Hyperskill 测试抛出错误,但 Eclipse 正常工作。
标签: java java.util.scanner system.in