gpt4 book ai didi

java - 使用扫描仪读取文件时出现异常

转载 作者:行者123 更新时间:2023-12-01 10:58:41 25 4
gpt4 key购买 nike

我正在尝试让程序读取文本文件的内容,将每一行存储在数组中,然后以每种类型的有序方式输出结果。我已经排序了部分,但每次运行主程序时,我都会收到 try/catch 的错误消息(这仍在进行中)

package p20;
import java.io.*;
import java.util.*;

public class EmployeeOrderingDemo {

public static void main(String[] args) {
Scanner input=null;
ArrayList<EmployeeFX> employeeList=new ArrayList<EmployeeFX>();
try {
FileReader Info=new FileReader("P01_DATA.txt");
input=new Scanner(Info).useDelimiter("\\s\\s+");
}
catch(FileNotFoundException noFile) {
System.out.println("Can't open file");
System.exit(1);
}

try {
while(input.hasNextLine()) {
employeeList.add(new EmployeeFX(input.nextInt(),input.next(),input.next(), input.nextBoolean(), input.nextInt()));
input.nextLine();
}
}
catch(NoSuchElementException element) {
System.err.println("Wrong type of file");
System.exit(1);
}
catch(IllegalStateException state) {
System.err.println("Couldn't read from file");
System.exit(1);
}
if(input!=null) {
input.close();
}
}
}

我收到“文件类型错误”消息。是因为我需要跳过文本文件的标题吗?

这是 EmployeeFX 代码

package p20;

public class EmployeeFX {

private int id;
private String firstName;
private String lastName;
private boolean salaried;
private double salary;

public EmployeeFX(int id, String firstName, String lastName,boolean salaried, int salary) {
this.id=id;
this.firstName=firstName;
this.lastName=lastName;
this.salaried=salaried;
this.salary=salary;
}
}

这是堆栈跟踪

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 p20.EmployeeOrderingDemo.main(EmployeeOrderingDemo.java:26)

这是输入文本文件

id  firstName   lastName    salaried    salary

200 Caroline James false 37654
2 Julian James false 46499
1 Conor Habgren true 88767
10 Tillie Donalan true 98456
15 Alice Jeanu true 72821
12 Fred Habgren false 28767
103 Mary Donalan false 28456
135 Ed Jeanu true 52821

最佳答案

尝试对类的 main 方法使用以下代码:查找内联注释。

public static void main(String[] args) {
Scanner input=null;
ArrayList<EmployeeFX> employeeList=new ArrayList<EmployeeFX>();
try {
FileReader Info=new FileReader("P01_DATA.txt");
input=new Scanner(Info).useDelimiter("\\s+"); //Single white space regex is enough.
}
catch(FileNotFoundException noFile) {
System.out.println("Can't open file");
System.exit(1);
}

input.nextLine(); // Ignore the first line
input.nextLine(); // Ignore the second line

try {
while(input.hasNext()) { //hasNext() will check for the next available token
employeeList.add(new EmployeeFX(input.nextInt(),input.next(),input.next(), input.nextBoolean(), input.nextInt()));
} // Additional newLine() reading is not required here.
}
catch(NoSuchElementException element) {
System.err.println("Wrong type of file");
System.exit(1);
}
catch(IllegalStateException state) {
System.err.println("Couldn't read from file");
System.exit(1);
}
if(input!=null) {
input.close();
}
}

关于java - 使用扫描仪读取文件时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33465053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com