合并员工工时时出现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
相关产品推荐
相关产品推荐

