扫描数字时出现 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));
当您期待很长时间时,您应该从命令行传递非十进制数值。
尝试使用以下代码读取数字时生成 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));
当您期待很长时间时,您应该从命令行传递非十进制数值。