You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:39:03