似乎无法读取 Java 中的 .txt

Can't seem to read from .txt in Java

我似乎无法使用 .txt 文件中的变量创建对象,我有:

import java.io.*;
import java.util.*;

public class Main {
public static void main(String[] args){

    ArrayList<Employee> ArrEmployee = new ArrayList<Employee>(); //  array for employee objects


     try {
            Scanner txtIn = new Scanner(new File("/Users/PatrickBui/Documents/workspace/COMP 249 - Assignment 3/src/payroll.txt"));

            while (txtIn.hasNext()) { // looping through the payroll.txt file and creating Employee objects from its data

                long EmployeeNumber = txtIn.nextLong();
                String EmployeeName = txtIn.next();
                String LastName = txtIn.next();
                double HoursWorked = txtIn.nextDouble();
                double HourlyWage = txtIn.nextDouble();

                    ArrEmployee.add(new Employee(EmployeeNumber,EmployeeName,LastName,HoursWorked,HourlyWage));
            }
        } catch (FileNotFoundException e) {

            System.out.println("fail to find file payroll");
        }
}
}

到目前为止,我不知道是什么导致了这个问题。 payroll.txt 的格式如下:

31718 PHILLIP LENNOX 55.0 20.00
11528 NANCY TROOPER 40.0 10.45
16783 JOHN CONNAUGHT 30.5 10.00
10538 PETER DUNCAN 45.0 10.75
21O15 JAMES HAROLD 32.0 10.50

当我 运行 程序时,我不断收到这些错误:

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.nextLong(Scanner.java:2222)
at java.util.Scanner.nextLong(Scanner.java:2182)
at Main.main(Main.java:16)

为什么会这样?我的代码看起来顺序正确,这让我很困惑。

老实说,我会用另一种方式来做。读取一行,按空格拆分,然后解析每一部分。它的代码比您拥有的代码少或不多,但使您能够检查每一部分并纠正问题。

扫描仪需要非常严格的数据格式,您无法随心所欲地解决问题(例如,在现实世界中,这些行中的一行或多行会有一个中间名,这完全可以控制您的扫描仪)。

您的问题可能只是数据中的前导空行之类的问题。如果您想继续以这种方式工作,请尝试使用 "has" 方法首先查看它是否有可用的长,如果没有则向前跳一点。

你的问题是你在 James Harold 的 ID

中有一个字母 O 而不是零 0
21O15

应该是

21015