java.util.InputMismatchException 扫描仪问题?

java.util.InputMismatchException scanner issue?

我正在尝试通过键盘扫描仪收集用户输入并验证输入是否与存储的值匹配。因此,如果输入是 2927942074lCorrect 应该出现但是我收到以下错误。此外,如果输入与引脚不匹配,则会出现 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");
  }
}

您的代码是正确的并且符合要求。

你需要输入的是2927942074而不是2927942074l

只键入数字 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");
}

你必须输入

2927942074

没有

2927942074l

“L”仅供 Java 编译器理解,die 数字类似于 long 而不是 int(这是默认值)。