Java类,获取新的对象数组

Java类,获取新的对象数组,java,algorithm,class,Java,Algorithm,Class,这项练习我需要一些帮助 我想把所有员工的工资打印在一起,但我没法把它打印出来 当我创建一个新部门时,我希望接收我只写对象(工作者)名称的工作,而不是重新输入信息 实际结果(打印0时出错): 预期结果:计算所有工人的工资 主类 public class main { public static void main(String[] args) { Worker work1 = new Worker("1234567"); work1.name = "davi

这项练习我需要一些帮助

我想把所有员工的工资打印在一起,但我没法把它打印出来

当我创建一个新部门时,我希望接收我只写对象(工作者)名称的工作,而不是重新输入信息

实际结果(打印0时出错):

预期结果:计算所有工人的工资

主类

public class main {
    public static void main(String[] args) {
        Worker work1 = new Worker("1234567");
        work1.name = "david";
        work1.Number_Of_Hours = 50;
        work1.Hourly_Wage = 25;

        Worker work2 = new Worker("234567","foo",50,30);

        work1.calculateSalery(55);
        work2.calculateSalery(60);

        System.out.println(work1.toString());
        System.out.println(work2.toString());


        Department cp = new Department();
        cp.addEmploy("123", "av", 25, 50);

        System.out.println(cp.calculateDepartmentSalery());

        System.out.println(cp.toString());
    }
}
工人阶级

public class Worker {
    public String id;
    public String name;
    public int Hourly_Wage;
    public int Number_Of_Hours;

    public Worker(String _id) {
        id = _id;
    }

    public void addHoure(int hours) {
        Number_Of_Hours += hours;
    }

    public Worker(String _id, String _name, int _Hourly_Wage,
                  int _Number_Of_Hours) {
        id = _id;
        name = _name;
        Hourly_Wage = _Hourly_Wage;
        Number_Of_Hours = _Number_Of_Hours;
    }

    public void clearHour() {
        Number_Of_Hours = 0;
    }

    int FinalSalary = 0;

    public int calculateSalery(int h) {
        int cal = 0;
        if (h > Number_Of_Hours) {
            cal = h - Number_Of_Hours;
            cal = cal * ((Hourly_Wage / 100) * 120);
            FinalSalary = (Hourly_Wage * Number_Of_Hours) + cal;
        }

        else {
            FinalSalary = Hourly_Wage * Number_Of_Hours;
        }
        return FinalSalary;
    }

    public String toString() {
        String str = "id: " + id + " name: " + name + " Hourly Wage: "
                + Hourly_Wage + " Number Of Hours: " + Number_Of_Hours
                + " Final Salary: " + FinalSalary;
        return str;
    }
}
班级部门

public class Department {
    public String name;
    public int Annual_budget;
    public final int Max_Workers = 30;
    private Worker[] arrWork = null;
    private int Index;

    public Department() {
        arrWork = new Worker[Max_Workers];
        Index = 0;
    }

    public boolean addEmploy(String _id, String _name, int _Hourly_Wage,
                             int _Number_Of_Hours) {
        arrWork[Index] = new Worker(_id, _name, _Hourly_Wage, _Number_Of_Hours);
        return true;
    }

    int result = 0;

    public int calculateDepartmentSalery() {

        for (int i = 0; i < Index; i++) {
            if (arrWork[i] != null)
                result += arrWork[i].FinalSalary;
        }
        return result;

    }

    public String toString() {
        String str = "calculate Department Salery: " + result;
        return str;
    }
}
公共课部{
公共字符串名称;
公共部门年度预算;
公共最终int最大值=30;
私人工作者[]arrWork=null;
私有整数索引;
公共部门(){
arrWork=新工人[最多工人];
指数=0;
}
公共布尔加法(字符串id、字符串名称、整数小时工资、,
整数(小时数){
arrWork[索引]=新员工(\u id、\u姓名、\u小时工资、\u小时数);
返回true;
}
int结果=0;
public int CalculatedPartmentSalery(){
对于(int i=0;i
您可能需要查看基本
OOP
。在
Worker
Department
中定义的变量应该是私有的,可以使用
getID()
setID(String ID)
等方法。工人应存储在
阵列列表中,如下所示:

ArrayList<Worker> workers = new ArrayList<Worker>();
workers.add(new Worker(*input proper data*));
此外,这些呼吁:

work1.calculateSalery(55);
work2.calculateSalery(60);

由于您没有将这些计算存储在任何位置,因此这些计算都毫无意义。因为
calculateSalery()
返回type
int
您可以将这些值存储在
int
变量中。但是,您可能希望使用
double
变量类型,例如
小时工资、小时数、
和方法
calculateSalery()

请在问题中包括出现了什么问题、实际结果是什么以及预期结果是什么。好的,谢谢。您的命名错误:类名应以大写字母开头,方法和字段应以小写字母开头。然而,您的问题是
索引
并没有通过
addEmploy
递增,所以当调用
CalculatedPartmentSaley()
时,它仍然是
0
,循环将不起任何作用。此外,不应将结果存储在字段中。如果调用两次
CalculatedPartmentSalery()
,会发生什么情况?哎呀。学会调试,这样你就能比在这里写问题等待答案更快地找到错误。我不会因为你需要帮助就去练习@好吧,你可以使用调试器来发现你自己。提示:如果索引为0,循环从0运行到比索引小的某个值,循环将运行多少次?
int sum = 0;
for(Worker w : workers){
sum += w.calculateSalary(w.getH());//you may need to include an "h" variable in the worker class
}
work1.calculateSalery(55);
work2.calculateSalery(60);