有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法扫描字符串或整数

所以我试图计算一个简单的程序,它有n个Person类型的对象,每个人都有名字、身份证、护照和驾驶执照

事情是这样的:

public class Person {

    private String name;
    private int id;
    private int passport;
    private int licence;

    Person(String name, int id, int passport, int licence) {
        this.name=name;
        this.id=id;
        this.passport=passport;
        this.licence=licence;
    }
}

public class Main {
    public static void main(String[] args) {
        Scanner jin=new Scanner(System.in);
        int n=jin.nextInt(), i;
        Person[] dudes=new Person[n];
        for(i=0; i<n; i++) {
            String name=jin.nextLine();
            int id=jin.nextInt();
            int passport=jin.nextInt();
            int licence=jin.nextInt();
            dudes[i]=new Person(name, id, passport, licence);
        }
    }
}

但是,当我为字符串名称输入一个值时,会出现以下错误:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at test.Main.main(Main.java:20)

有什么想法吗


共 (1) 个答案

  1. # 1 楼答案

    如果你把String name = jin.nextLine();改成String name = jin.next();,它会按照你拥有它的方式工作

    一种更简单的方法是在输入int后清除缓冲区,比如名字和姓氏

    for(i=0; i<n; i++)
        {
            jin.nextLine();  // add this to clear the input from before.
            String name=jin.nextLine();
            int id=jin.nextInt();
            int passport=jin.nextInt();
            int licence=jin.nextInt();
    
            dudes[i]=new Person(name, id, passport, licence);
        }