【发布时间】:2016-05-18 08:06:32
【问题描述】:
我在这个练习中需要一些帮助。
我想把所有员工的工资一起打印出来,但是我不能让它工作。
当我创建一个新部门时,我想接收我只写对象(工人)名称的工作,而不是重新输入信息。
实际结果(打印为0时出错):
id: 1234567 name: david Hourly Wage: 25 Number Of Hours: 50 Final Salary: 1250
id: 234567 name: foo Hourly Wage: 50 Number Of Hours: 30 Final Salary: 1500
0
calculate Department Salery: 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;
}
}
【问题讨论】:
-
请在问题中包括出了什么问题,实际结果是什么,预期结果是什么。
-
好的,已更改,谢谢。
-
你的命名不好:类名应以大写字母开头,方法和字段应以小写字母开头。但是,你的问题是
Index没有增加addEmploy,所以当calculateDepartmentSalery()被调用时它仍然是0,并且循环不会做任何事情。此外,您不应将结果存储在字段中。如果calculateDepartmentSalery()被调用两次会发生什么?哎呀。学会调试,你会发现这样的错误比在这里写一个问题等待答案更快。 -
我不去锻炼只是因为你需要帮助!
-
@scndjs 好吧,您可以使用调试器找出自己。提示:如果 index 为 0,并且循环从 0 运行到小于 index 的某个值,循环将运行多少次?