我正在尝试通过键盘扫描器收集用户输入,并验证输入是否与存储的值匹配。因此,如果输入为2927942074l
,则应显示行Correct
,但是出现以下错误。同样,如果输入与引脚不匹配,则会显示行Wrong
。不知道我在做什么错。
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextLong(Scanner.java:2373)
at java.base/java.util.Scanner.nextLong(Scanner.java:2328)
at app.main(app.java:11)
import java.util.Scanner;
class app {
public static void main(String[] args)
{
long pin = 2927942074l;
System.out.println("Please enter your pin.");
Scanner keyboard = new Scanner(System.in);
long input = keyboard.nextLong();
if (input != pin)
System.out.println("Wrong");
if (input == pin)
System.out.println("Correct");
}
}
答案 0 :(得分:0)
您的代码正确无误,并且可以按要求工作。
您需要输入的内容是2927942074
而不是2927942074l
答案 1 :(得分:0)
仅键入数字2927942074
,不带'l'。否则它将视为字符串。
另外,如果您不想接受字符串输入,则可能要使用keyboard.hasNextLong()添加条件。
if (keyboard.hasNextLong()) {
long input = keyboard.nextLong();
if (input != pin)
System.out.println("Wrong");
if (input == pin)
System.out.println("Correct");
} else {
System.out.println("Enter a valid pin");
}
答案 2 :(得分:0)
您必须输入
2927942074
不是
2927942074l
“ L”仅供Java编译器理解,死位数字类似于长整数而不是整数(这是默认值)。