多次输入整数时出现 InputMismatchException

InputMismatchException when entering integers multiple times

我看过其他类似的问题,但没有找到解决我的问题的方法。

只是尝试扫描 2 个数字并将它们相加:

Scanner input = new Scanner(System.in);
int number1;
int number2;
int sum;

System.out.print("First: ");
number1 = input.nextInt();
System.out.println("Second: ");
number2 = input.nextInt();

sum = number1 + number2;

System.out.println("The sum is " + sum);

第一个打印得很好,下一次它与 IME 一起崩溃...我做错了什么?

在您的第一个 nextInt() 调用之后插入 input.nextLine()nextInt() 会留下换行符。

很久以前这个问题已经在这里被问过很多次了,包括我自己。

当使用 scn.nextInt() 时,它仍然等待输入,从而影响以后的所有输入。

有两种方法可以解决这个问题。

  1. 在您的 scn.nextInt() 之后放置一个 scn.nextLine()

    System.out.print("First: ");
    number1 = input.nextInt(); input.nextLine();
    System.out.println("Second: ");
    number2 = input.nextInt(); input.nextLine();
    
  2. 接收为String并解析为整数(我更喜欢这种方法)

    System.out.print("First: ");
    number1 = Integer.parseInt(input.nextLine());
    System.out.println("Second: ");
    number2 = Integer.parseInt(input.nextLine());
    

如果您在 C# 方面有一些经验,他们希望您也可以使用第二种方法。