【发布时间】:2020-10-03 04:15:11
【问题描述】:
我需要逐行读取 .txt 文件并将每一行存储到一个数组中。每个数组有 3 个元素,empId、name、salary,它们是 SalariedEmployee 类的字段。我的代码有一个 NumberFormatException,我不知道哪一步出错了。任何提示或帮助将不胜感激。谢谢。请不要关闭我的问题,我是 Java 的初学者。
异常信息:
Exception in thread "main" java.lang.NumberFormatException: For input string: "Kelsey"
at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.base/java.lang.Double.parseDouble(Double.java:549)
at com.maoding.Hw3_Part2.main(Hw3_Part2.java:23)
.txt 文件:
1, Kelsey, 65000
2, Jake, 89000
3, Carlos, 105000
4, Clarence, 58000
5, Pacheco, 68000
6, Piotr, 120000
7, Adam, 47000
8, Yorst, 77000
9, Silas, 93000
10, Yapsiong, 85000
SaliedEmployee 类:
public class SalariedEmployee {
// instance variable
public int empId;
public String name;
public double salary;
// constructor
public SalariedEmployee(int empId, String name, double salary) {
this.empId = empId;
this.name = name;
this.salary = salary;
}
// get methods
public int getEmpId() {
return empId;
}
public String getName(){
return name;
}
public double getSalary(){
return salary;
}
主类:
public class Hw3_Part2 {
public static void main(String[] args) throws IOException {
int empId;
String name;
double salary;
String[] words;
Scanner fileInput = new Scanner(new File("/Users/hw3_employees.txt"));
while (fileInput.hasNextLine()) {
words = fileInput.nextLine().split(",|\\s+");
for (int i = 0; i < words.length; i++) {
empId = Integer.parseInt(words[0]);
name = words[1];
salary = Double.parseDouble(words[2]);
SalariedEmployee se = new SalariedEmployee(empId, name, salary);
System.out.println(words);
System.out.println(se);
}
}
}
【问题讨论】:
-
在 for 循环中设置断点,打开调试器,然后单步执行代码?
-
哪一行产生错误。添加错误输出。
-
感谢您的评论,我更新了异常消息。