如何用Java计算总和?

时间:2019-06-30 05:24:09

标签: java encapsulation getter-setter

在这种情况下,您能否建议如何计算所有员工的总工资? 我正在尝试为所有员工计算出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 ());
                }
                }


2 个答案:

答案 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);