Java 合并员工工时时,无法重新写入变量错误
我正在尝试接受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] 但是,我无法进入代码的这一步,因为我的代码中有一个已解决的变量错误: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
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));
}