继续获取InputMismatchException

时间:2018-09-07 09:32:21

标签: java

我有一个Java课程入门项目,并且不断收到InputMismatchException。两名评分助理找不到问题,所以希望这里有人可以!该程序使用文档作为输入,由于某种原因,它读错了。随附的是一个zip文件,其中包含输入文件和所有类(尽管您可能只需要主类)。还随附了该课程给出的说明。谢谢!

似乎出错的代码:

 private OnlineStudent readOnlineStudent(Scanner pIn) {
    String id = pIn.next();
    String lname = pIn.next();
    String fname = pIn.next();

    OnlineStudent student = new OnlineStudent(id, fname, lname);

    String fee  =  pIn.next();
     - Line 160 > int credits = pIn.nextInt();

    if (fee.equals("T")) student.setTechFee(true);
    else student.setTechFee(false);

    student.setCredits(credits);

    return student;
}

这是输入文档的文本:

C 8230123345450 Flintstone Fred R 0 12
C 3873472785863 Simpson Lisa N 750 18 
C 4834324308675 Jetson George R 0 20 
O 1384349045225 Szyslak Moe - 6
O 5627238253456 Flanders Ned T 3

堆栈跟踪:

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at Main.readOnlineStudent(Main.java:160)
    at Main.readFile(Main.java:84)
    at Main.run(Main.java:189)
    at Main.main(Main.java:31)

使用代码和文档链接到Google驱动器文件夹:

https://drive.google.com/open?id=1rjiXoB-rBd1FQdQQqbGMGL_a1kWd1v_Z

2 个答案:

答案 0 :(得分:0)

查看输入与读数值的匹配方式。

    String id = pIn.next();  // C
    String lname = pIn.next(); //8230123345450
    String fname = pIn.next(); //Flintstone

    OnlineStudent student = new OnlineStudent(id, fname, lname);

    String fee  =  pIn.next(); //Fred
    int credits = pIn.nextInt(); // R --->this is not an integer

对于R值,您必须具有另一个next()。

答案 1 :(得分:0)

在主类第80行中,应使用equals方法,而不是“ ==”。这会使扫描仪读取错误的类型;