当尝试使用下面的代码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));
您期望很长的时间,您应该从命令行传递非十进制数值。