This question already has answers here:
Scanner is skipping nextLine() after using next() or nextFoo()?

(19个回答)


3个月前关闭。





我正在为学校编写代码,但在读取用户输入时遇到问题。我创建了一个新的类进行测试,以查看它是否是我周围的代码,不是。这是简化的代码。

    import java.util.*;
public class practice {
    public static void main(String[] args){
      Scanner kb = new Scanner(System.in) ;
      String fullname = kb.nextLine();
      int age = kb.nextInt();
      String program = kb.nextLine();
    * int number = kb.nextInt();
      System.out.println(fullname);
      System.out.println(age);
      System.out.println(program);
      System.out.println(number);
    }
}


出现以下错误

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.nextInt(Scanner.java:2258)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
    at practice.main(practice.java:8)


我已标记出错误发生的位置。为什么会发生这种情况,我该如何解决?

到目前为止,我已经尝试过:
-在第一个kb.nextLine()之后添加了kb.nextLine()
-尝试在每次输入后重置扫描仪

最佳答案

  Scanner kb = new Scanner(System.in) ;
  String fullname = kb.nextLine();
  int age = kb.nextInt();
  kb.nextLine();
  String program = kb.nextLine();
  int number = kb.nextInt();

  kb.nextLine();
  System.out.println(fullname);
  System.out.println(age);
  System.out.println(program);
  System.out.println(number);


参考:InputMismatchException when using Sacnner nextLine for String

07-28 02:07
查看更多