Java 合并员工工时时,无法重新写入变量错误

Java 合并员工工时时,无法重新写入变量错误,java,class,methods,Java,Class,Methods,我正在尝试接受Employee对象并合并所述员工的工时。 例如,如果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] 但是,我无法进入代码的这一步,因为我的代码中有一个已解决的变量错误: public class Employee { private double[] hours; private String name; private dou

我正在尝试接受Employee对象并合并所述员工的工时。 例如,如果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]

但是,我无法进入代码的这一步,因为我的代码中有一个已解决的变量错误:

public class Employee {

private double[] hours;
private String name;
private double payRate;

public Employee() {
    hours = new double[7];
}

public Employee(String name, double payRate) {
    hours = new double[7];
    this.name = name;
    this.payRate = payRate;

}

public double getHours(int day) {
    return hours[day];

}

public void setHours(int day, double num) {
    hours[day] = num;
}

public String getName() {
    return name;
}

public double getPayRate() {
    return payRate;
}

public int getNumDaysWorked() {
    int count = 0;
    for(int i = 0; i < hours.length; i++) {
        if(hours[i] > 0) {
            count++;
        }
    }
    return count;
}

public double getTotalHours() {
    int count = 0;
    for(int i = 0; i < hours.length; i++) {
        count += hours[i];
    }
    return count;
}

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

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

public void newWeek() {
    for(int i = 0; i < hours.length; i++) {
        hours[i] = 0;
    }
    //Arrays.fill(array,0.0); ??? 
}

public double getPay() {
    double totalPay = 0.0;
    double timeHalf = (payRate * 1.5);
    double timeDouble = (payRate * 2.0);
    double bonus = 50.00;

    if(getNumDaysWorked() == 7) {
        totalPay += bonus;
    }

    if(getWeekendHours() > 0) {
        totalPay += (getWeekendHours() * timeDouble);
    }

    if(getWeekdayHours() > 40) {
        totalPay += (payRate * 40) + ((getWeekdayHours() - 40)*timeHalf);
    }
    else {
        totalPay += (getWeekdayHours() * payRate);
    }

    return totalPay;
}

public void mergeEmployee(Employee emp) {
    if(this.getHours(day).equals(emp.getHours(day))) {    

    }
}
}
公共类员工{
私人双[]小时;
私有字符串名称;
私人双倍工资率;
公职人员(){
小时数=新双倍[7];
}
公共雇员(字符串名称,双倍工资率){
小时数=新双倍[7];
this.name=名称;
这个。工资率=工资率;
}
公共双小时制(国际日){
返回时间[天];
}
公共无效设置小时数(整数天,双倍数值){
小时[天]=个数;
}
公共字符串getName(){
返回名称;
}
公共双getPayRate(){
回报率;
}
public int getNumDaysWorked(){
整数计数=0;
对于(int i=0;i0){
计数++;
}
}
返回计数;
}
公共双getTotalHours(){
整数计数=0;
对于(int i=0;i40){
totalPay+=(工资率*40)+((getWeekdayHours()-40)*timeHalf);
}
否则{
totalPay+=(getWeekdayHours()*工资率);
}
返回工资总额;
}
公共雇员(雇员环境管理计划){
如果(this.getHours(day).equals(emp.getHours(day)){
}
}
}
错误出现在mergeEmployee类的if语句中。
我的大脑已经死了,所以如果我遗漏了一些简单而重要的东西,我向您道歉。

在该函数的作用域中没有声明的变量“day”。我想你要做的是在for循环中使用它,比如:

for(int day=0; day<7; day++) {
    if(this.getHours(day) == emp.getHours(day)) {
        // do stuff
    }
}

用于(int day=0;day如果您告诉我正在解决一个变量错误,对我们来说很容易,在哪里?在您的mergeEmployee方法中,变量“day”是什么?它在我的代码下面,对不起,应该把它放在顶部。错误在mergeEmployee方法中,在代码的最底部。这是一个反复试验。如果我去掉变量day,它会给出这个结果错误:Employee类型中的getHours(int)方法不适用于参数(),如果您将“.equals()”更改为“==”,该怎么办?谢谢,这两种方法看起来都很有希望,我将在上午对它们进行测试。如果其中一种有效,我将对此进行检查
for(int day=0; day<7; day++) {
    this.setHours(day, this.getHours(day) + emp.getHours(day)); 
}