当前位置: 首页 > 知识库问答 >
问题:

从. txt文件扫描时出现Java . util . inputmismatchexception错误

缑赤岩
2023-03-14

我正在创建一个使用2个类的程序。在一个类中,我创建方法,然后由第二个类调用。所有方法都包含在第一个类中,第二个类只是调用它们并执行代码。

第 1 类

 import java.io.File;
 import java.io.FileNotFoundException;
 import java.util.Scanner;


 public class Student {


    private Scanner scanner;
    private String firstName;
    private String lastName;
    private int homeworkScore;
    private int testScore;
    private String letterGrade;
    private int numberOfStudents;

    public Student () {

        String firstName = null;
        String lastName = null;
        int homeworkScore = 0;
        int testScore = 0;
        String letterGrade = null;
        int numberOfStudents = 0;
    }


    public void openFile(){
        try { 
            scanner = new Scanner(new File("grades.txt"));
        } catch (FileNotFoundException e) { 
            System.out.println("Error opening file. Please make sure that you have a grades.txt file in the same folder as GradeCalculator.class");
            System.exit(0); 
        }
    }


    public void setNumberOfStudents() {
        System.out.println("It kinda works");
        numberOfStudents = scanner.nextInt();
    }

 public void setFastName() {
        fastName = scanner.next();
    }

 public void setLastName() {
        lastName = scanner.next();
    }

public void setHomeworkScore() {

        int subAssignment = 0;
        int assignment = 0;

        for(int i = 1; i <= 21; i++) { 
            subAssignment = scanner.nextInt();
            assignment += subAssignment;
        }

        homeworkScore = assignment;
    }

第二类

  import java.io.File;
  import java.io.FileNotFoundException;
  import java.util.Scanner;


 public class CourseGrade {

public static void main(String[] args) {

    Student myStudent = new Student();

    myStudent.openFile();

    myStudent.setNumberOfStudents();

    myStudent.setFirstName();

    myStudent.setLastName();

    myStudent.setHomeworkScore();


}

 }

这是我得到的错误:

 It kinda works
 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 Student.setHomeworkScore(Student.java:54)
 at CourseGrade.main(CourseGrade.java:20)

...“它有点工作”语句只是为了看看它是否正确调用了该方法,看起来确实如此。

根据我的理解,这个错误告诉我它从。txt文件,但idk为什么会这样。它能正确读取文件吗?任何类型的帮助都很好,因为我已经盯着这段代码看了几个小时了!

共有2个答案

戴浩初
2023-03-14

根据oracle java留档,当令牌不符合请求的模式(int)或超出范围时,会引发该异常。

如果文件中不再有int,就会抛出异常。< br >您可以通过检查是否有另一个int值要用Scanners方法hasNextInt读取来避免该异常。

例如:

for(int i = 1; i <= 21 && scanner.hasNextInt(); i++) { 
            subAssignment = scanner.nextInt();
            assignment += subAssignment;
}

(如果这不能解决您的问题,您还应该包括您的输入文件)

颛孙庆
2023-03-14

根据错误消息以及错误发生的位置,很可能您正在尝试读取一个整数,但您正在读取的实际数据不是数字。

您可以通过将您的< code>scanner.nextInt()更改为< code>scanner.next()并打印出您实际获得的值来验证这一点。或者,您可以添加以下形式的“错误处理”:

    for(int i = 1; i <= 21; i++) { 
        if (scanner.hasNextInt()
          subAssignment = scanner.nextInt();
        else
          throw new RuntimeException("Unexpected token, wanted a number, but got: " + scanner.next());
        assignment += subAssignment;
    }
 类似资料:
  • 我正在编写一个程序,它接受来自文件的输入,并打印城市及其降雨量的列表。我在确定阵列长度和城市降雨量数据的扫描仪上遇到了麻烦。 我一直得到这个例外 在java.util.scanner.throwfor(scanner.java:909)在java.util.scanner.next(scanner.java:1530)在java.util.scanner.nextInt(scanner.java:

  • 我对我的代码有一点理解上的问题。每次运行代码时,在输入第一个整数后都会收到此错误消息。 在java.util.scanner.throwfor(未知源)在java.util.scanner.next(未知源)在java.util.scanner.nextint(未知源)在java.util.scanner.nextint(未知源)在java.util.scanner.nextint(未知源)在a2

  • 我觉得我在做一些非常愚蠢的事情,但我是Java新手,所以请耐心等待。我正在使用FileReader和扫描器来读取。txt文件的行。抓取每一行后,我提取一些信息,然后移动一行。这就是我的简化方法的样子: 我的问题是,如果将留在原处,我总是会跳过。txt文件的第一行,但是如果将它移到的末尾,当扫描仪到达。txt文件的末尾时,我会得到一个“no sock line exists”异常。 如有任何帮助和指

  • 我已经在许多地方查阅了下面的错误,但似乎无法就解决方案或一个有效的解决方案达成共识。 “Maven项目扫描错误[项目路径];Java.lang.OutOfMemoryError:Java堆空间” 我将MAVEN_OPTS设置为“-xms512m-xmx1024m-xx:maxpermsize=1024” 我正在导入的项目是一个资产项目,有许多图像、图标、.swf和JS文件。 是不是我还需要什么,或

  • 问题内容: 试图使用像ZXing,ZBar和它们的fork之类的几个库,但是找不到从相机而不是从文件扫描条形码的方法。 有人可以指出我正确的方向吗?最好是我正在研究ZXing:如何从文件(而不是相机)扫描图像。 请。 问题答案: 最后,我找到了解决方案。代码是(源自此处): Gradle引用为: 用法:

  • 声纳扫描仪在运行扫描仪时抛出空指针异常。错误指向一个枚举。它实现了一个典型的接口。 我记得几个月前运行扫描仪时没有出现任何问题,但这次不同了,感谢您的帮助。 添加了一些乱码,我可以保证没有编译问题。 包括声纳项目属性。#所需元数据sonar.project密钥=com.companysonar.project名称=项目sonar.project版本=1.0