好的,假设我有一个抽象的Employee类,3个继承自
的类Employee(Commission, Salary, and Hourly)
员工包括
name
employeeNumber
gender
及其下的内容包括getHourlyWage
或getSalary
等内容。然后我有一个带有菜单的驱动程序类,可供用户选择。最后我有一个EmployeeManager
课程。
在Driver类中,按名称对所有员工进行排序的方法之一就是这样调用:
EmployeeManager em = new EmployeeManager();
em.sortName();
现在我在EmployeeManager类中做什么? 首先我制作了阵列:
private Employee[] employees = new Employee[100];
那么我如何对此进行排序,或者首先如何为员工添加一个名为的方法:
addEmployee(int si, String first, char g, double amount)
int si = 1 if the employee is a salary,
2 if the employee is hourly,
3 if commission
string first = name
char g = gender
double amount= wage, salary, or rate-depends on what kind of employee.
非常感谢您的帮助!!
我认为我的员工,薪水,每小时,佣金和司机都是正确的。我只是不知道如何将它们与这个EmployeeManager连接起来。
答案 0 :(得分:3)
所有对象Commission, Salary, and Hourly
都扩展了超类Employee
,因此将它们添加到数组时就像这样简单:
/**
* Adds an Employee object to the employees
* array at index i. Note: this method doesn't
* check if there is already an Employee at index i
*
* List item
* @param index The index to add the Employee object at
* @param e The Employee object to add
*/
public void addEmployee(int index, Employee e)
{
employees[i] = e;
}
此方法将起作用,因为所有子类Comission
,Salary
和Hourly
都可以推广到Employee
超类对象。
使用ArrayList<Employee> employees
要容易得多,然后你可以完全忽略索引,只需使用add(E e)
类中的ArrayList
方法追加Employee
对象即可清单。
List<Employee> employees = new ArrayList<>();
public void add(Employee e)
{
employees.add(e);
}
对于排序,您应该让Employee
类实现java.util.Comparable
接口并覆盖compareTo(Object o)
方法。
希望这有帮助。
答案 1 :(得分:1)
我认为您会发现此链接有用:Java Sorting: Comparator vs comparable
此处显示的示例使用Employee类和List而不是数组。使用比较器和可比较的方法解决分类。
答案 2 :(得分:0)
我假设您要使用数组而不是Collections框架。
您需要遍历employees数组并将每个数组设置为新的Employee。
它看起来像这样
for (int i = 0; i < employees.length; i++) {
employees[i] = new Employee();
}
然后,您可以继续添加员工
public void addEmployee(int si, String first, char g, double amount) {
if (numberOfEmployees < employees.length) {
employees[numberOfEmployees++] = new Employee(si, first, g, amount);
} else {
//double the size of the array...
}
}
鉴于,你的Employee类还需要一个像这样的构造函数,它将是:
. . .
Employee(int si, String first, char g, int amount) {
this.si = si;
this.first = first;
this.g = g;
this.amount = amount;
}
Employee() {
//empty constructor..
}
. . .