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

合并员工工时时出现Cannot be resolved to variable错误求助

解决mergeEmployee方法的变量未定义错误并实现工时合并逻辑

首先,咱们先拆解你遇到的问题:Cannot be resolved to variable错误的根源很直接——你在mergeEmployee方法里使用了day变量,但从来没有声明过它,Java自然无法识别这个未定义的变量。

而且你的逻辑方向也偏离了需求:咱们要做的是合并两个员工的每日工时,不是判断两天工时是否相等。正确的思路应该是遍历一周的7天,把传入员工的每日工时累加到当前员工的对应天数上。

修复后的mergeEmployee方法

public void mergeEmployee(Employee emp) {
    // 遍历一周的7天,从第0天到第6天
    for (int day = 0; day < hours.length; day++) {
        // 计算当前员工当天工时 + 传入员工当天工时的总和
        double mergedHours = this.getHours(day) + emp.getHours(day);
        // 将合并后的工时设置回当前员工的工时数组
        this.setHours(day, mergedHours);
    }
}

额外的细节优化建议

我还注意到你其他方法里的一个小问题:比如getTotalHours、getWeekdayHours这类计算工时总和的方法中,你用了int count来存储double类型的工时数值,这会导致精度丢失(比如工时是2.5的话,存入int会被截断为2)。建议把这些变量改成double类型:

public double getTotalHours() {
    double total = 0.0; // 替换int为double,避免精度丢失
    for(int i = 0; i < hours.length; i++) {
        total += hours[i];
    }
    return total;
}

public double getWeekdayHours() {
    double total = 0.0;
    for(int i = 0; i < 5; i++) {
        total += hours[i];
    }
    return total;
}

public double getWeekendHours() {
    double total = 0.0;
    for(int i = 5; i <7; i++) {
        total += hours[i];
    }
    return total;
}

修改完成后,你的mergeEmployee方法就能正常工作了:比如你举例的e1工时[8,8,8,2,0,0,0],e2工时[0,0,0,4,10,0,0],调用e1.mergeEmployee(e2)后,e1的工时会准确变成[8,8,8,6,10,0,0],完全符合你的需求。

内容的提问来源于stack exchange,提问作者A. Phillip

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:42:09