java.util.InputMismatchException扫描仪问题?

时间:2020-08-28 06:37:23

标签: java java.util.scanner

我正在尝试通过键盘扫描器收集用户输入,并验证输入是否与存储的值匹配。因此,如果输入为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");
  }
}

3 个答案:

答案 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编译器理解,死位数字类似于长整数而不是整数(这是默认值)。