Java类,获取新的对象数组
这项练习我需要一些帮助 我想把所有员工的工资打印在一起,但我没法把它打印出来 当我创建一个新部门时,我希望接收我只写对象(工作者)名称的工作,而不是重新输入信息 实际结果(打印0时出错): 预期结果:计算所有工人的工资 主类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
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()
返回typeint
您可以将这些值存储在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);