似乎无法读取 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
我似乎无法使用 .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