在这种情况下,您能否建议如何计算所有员工的总工资?
我正在尝试为所有员工计算出totalSum,但没有成功。
这是我尝试的最后一个:return totalSum += rate*hours;
我知道此代码是错误的,但不知道如何解决。寻求帮助。
public class Employee {
private String name;
private int rate;
private int hours;
private static int totalSum = 0;
public Employee() {}
public Employee (String name, int rate){
this.name = name;
this.rate = rate;
}
public Employee(String name, int rate, int hours) {
this.name = name;
this.rate = rate;
this.hours = hours;
}
public int getHours() {
return hours;
}
public void setHours(int hours) {
this.hours = hours;
}
public int getRate(){
return rate;
}
public void setRate(int rate) {
this.rate = rate;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary () {
return rate*hours;
}
public static int getTotalSum (){
return totalSum; //THIS IS WHERE I'M HAVING TROUBLE
}
}
因此,第一名雇员的工资为625欧元;第二名雇员-840欧元,第三名雇员-810欧元。
总计应为2275欧元。但是,如果我使用这个"totalSum += rate*hours"
,即使是薪水,我也会得到错误的价值:
1名员工-625欧元
2名员工-2090 EUR
3名员工-3740 EUR
总共是4550 EUR。
public class Main {
public static void main(String[] args) {
Employee employee1 = new Employee ();
employee1.setName ("Mari");
employee1.setHours (125);
employee1.setRate (5);
Employee employee2 = new Employee ("Miriam", 6);
employee2.setHours (140);
Employee employee3 = new Employee ("Eva", 9, 90);
System.out.println ("Total Salary is" + " " + Employee.getTotalSum ());
}
}
答案 0 :(得分:1)
我建议您制作一个LinkedList类,以便可以将您创建的雇员连接在一起。
它不适合大量员工,但可以那样工作。
我在您的代码中看到的问题是员工没有连接在一起,所以没有任何方法可以计算出来。
我可能是错的,如果是的话,请纠正我。
答案 1 :(得分:0)
您已将totalSum
声明为static
,因此static
意味着在应用程序级别将内存分配给此变量,而与对象声明无关。如果任何对象更改其值,则所有对象都将更改。
现在出现问题了,首先从static
中删除totalSum
。然后创建一个ArrayList
的{{1}}并计算总和。
Employees
的声明应如下
totalSum
在您的Employee班级中,您要像计算工资一样计算
private int totalSum = 0; // I used the same variable name, rather now it will only have employee salary, not the totalSum, we will calculate totalSum at end.
您现在的主要方法
public static int getTotalSum (){ // don't confuse with the function name I used same as you used
totalSum = rate * hours; // whatever you want.
return totalSum ;
}
现在您可以将总和计算为
ArrayList<Employee> list = new ArrayList<Employee>();
list.put(employee1);
list.put(employee2);