Java如何读取txt文件存储员工属性并计算每人每周薪资
实现步骤
1. 优化Workers类
修正原代码的拼写、格式问题,新增周薪计算方法,修改后代码如下:
public class Workers { // 修正属性命名为标准小驼峰,修正LastName拼写错误 private String firstName; private String lastName; private int hoursWorked; private int dollarPerHour; // 新增周薪计算方法 public int getWeeklySalary(){ return hoursWorked * dollarPerHour; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public int getHoursWorked() { return hoursWorked; } public void setHoursWorked(int hoursWorked) { this.hoursWorked = hoursWorked; } public int getDollarPerHour() { return dollarPerHour; } public void setDollarPerHour(int dollarPerHour) { this.dollarPerHour = dollarPerHour; } @Override public String toString() { return "员工:" + firstName + " " + lastName + ",本周工时:" + hoursWorked + "小时" + ",时薪:" + dollarPerHour + "美元" + ",本周薪资:" + getWeeklySalary() + "美元"; } }
2. 重写Main类逻辑
移除不必要的继承关系,新增集合存储所有员工实例,增加行拆分、对象赋值逻辑,修改后代码如下:
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { // 用List存储所有员工对象,后续可随时调用任意员工的数据 List<Workers> workerList = new ArrayList<>(); // 按需求设置每周默认工时,若你的txt第三列是工时,可删掉这个常量从txt读取 final int DEFAULT_WORK_HOUR = 40; try(BufferedReader reader = new BufferedReader(new FileReader("src/WorkersAndPay.txt"))){ String line; while ((line = reader.readLine()) != null){ // 跳过空行 if(line.trim().isEmpty()) continue; // 按逗号拆分每一行的字段 String[] fields = line.split(","); // 创建员工对象并赋值 Workers worker = new Workers(); worker.setFirstName(fields[0].trim()); worker.setLastName(fields[1].trim()); worker.setDollarPerHour(Integer.parseInt(fields[2].trim())); worker.setHoursWorked(DEFAULT_WORK_HOUR); // 把员工对象加入集合 workerList.add(worker); } } catch (IOException e) { e.printStackTrace(); } // 遍历集合输出所有员工信息和薪资 for (Workers worker : workerList) { System.out.println(worker); } // 如果你要调用单独某一名员工的数据,直接按索引取即可,比如取第一个员工: // Workers firstWorker = workerList.get(0); // System.out.println(firstWorker.getFirstName() + "的薪资是" + firstWorker.getWeeklySalary()); } }
运行效果说明
用你提供的txt测试,默认按每周40工时计算的话,输出结果如下:
员工:Michael Zargosa,本周工时:40小时,时薪:14美元,本周薪资:560美元 员工:MAx SMith,本周工时:40小时,时薪:15美元,本周薪资:600美元 员工:Judith Smith,本周工时:40小时,时薪:16美元,本周薪资:640美元
如果你的txt第三列实际是工时,只需要把Main类里的赋值逻辑调换:把setDollarPerHour换成setHoursWorked,时薪自己设置默认值即可。
内容的提问来源于stack exchange,提问作者michael murillo
相关产品推荐
相关产品推荐

