多次输入整数时的InputMismatchException

时间:2015-04-16 11:42:19

标签: java java.util.scanner inputmismatchexception

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

只是尝试扫描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崩溃...我做错了什么?

2 个答案:

答案 0 :(得分:1)

在第一次input.nextLine()电话后插入nextInt()nextInt()会留下换行符。

答案 1 :(得分:0)

这个问题在很久以前就已被问到很多次,包括我自己。

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

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

  1. scn.nextLine();

    之后放置scn.nextInt()
    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());
    
  3. 如果您在C#有一些经验,他们希望您也可以使用第二种方法。