java - 将文本文件读取到列表并将其分配给类属性
问题描述
我有一个从文本文件中读取的类,它分配给子类并给我:
java.lang.ArrayIndexOutOfBoundsException:2
我不明白,超级员工的构造函数是这样的:
public Employee(String employeeId, String fname, String lname, String dateOfBirth, String gender, String address, String titleOfEmployment, String dateHired, String department, double hoursWorked, double rateOfPay, String leaveDays, double carAllowance, double salary, double taxRate) {
this.employeeId = employeeId;
this.fname = fname;
this.lname = lname;
this.dateOfBirth = dateOfBirth;
this.gender = gender;
this.address = address;
this.titleOfEmployment = titleOfEmployment;
this.dateHired = dateHired;
this.department = department;
this.hoursWorked = hoursWorked;
this.rateOfPay = rateOfPay;
this.leaveDays = leaveDays;
this.carAllowance = carAllowance;
this.salary = salary;
this.taxRate = taxRate;
}
这是读取文件的类:
public class Freader {
// ** Reads the file one line at a time. Each line will is that split up and translated into a Passenger object */
public static List < Employee > readline() throws IOException {
List < Employee > employee = new ArrayList < > ();
String file = "employees.txt";
BufferedReader bf = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
String line;
while ((line = bf.readLine()) != null) {
String[] tokens = line.split(" ");
Employee emp = new Employee(tokens[0], tokens[1], tokens[2], tokens[3], tokens[4], tokens[5], tokens[6], tokens[7], tokens[8], Double.parseDouble(tokens[9]), Double.parseDouble(tokens[10]), tokens[11], Double.parseDouble(tokens[12]), Double.parseDouble(tokens[13]),
Double.parseDouble(tokens[14]));
emp.setEmployeeId(tokens[0].trim());
emp.setFname(tokens[1].trim());
emp.setLname(tokens[2].trim());
emp.setDateOfBirth(tokens[3].trim());
emp.setGender(tokens[4].trim());
emp.setAddress(tokens[5].trim());
emp.setTitleOfEmployment(tokens[6].trim());
emp.setDateHired(tokens[7].trim());
emp.setDepartment(tokens[8]);
emp.setHoursWorked(Double.parseDouble(tokens[9]));
emp.setRateOfPay(Double.parseDouble(tokens[10]));
emp.setLeaveDays(tokens[11].trim());
emp.setCarAllowance(Double.parseDouble(tokens[12]));
emp.setSalary(Double.parseDouble(tokens[13]));
emp.setTaxRate(Double.parseDouble(tokens[14]));
employee.add(emp);
}
return employee;
}
}
解决方案
从评论中,看起来数据是用逗号(,)分隔的,并且在代码中它是通过空格完成的。所以显然会失败。
代替
String[] tokens = line.split(" ");
应该
String[] tokens = line.split(",");
推荐阅读
- sql - postgres:如何选择一个范围内的每个值?
- php - 无法按属性访问集合 Laravel 5.8
- html - 如何在 rmarkdwn html 中进行分页?
- node.js - 用于 QR 码的 Google Vision API 不在移动平台上
- java - 我们如何在 RecyclerView 中处理来自多个项目视图的点击?
- excel - 排除多个组合框中的双重输入,但允许除第一个之外的空框
- javascript - javascript中hypen后的字符串大写
- r - 我应该如何处理多项选择/响应(检查所有应用)数据?
- c++ - 如何从 sql 数据库获取记录到 char 数组或字符串或整数?
- c# - 从特定文件夹中获取一个 Json 文件并序列化它