JavaSE进阶
9、修改NameListService类
在NameListService类的构造器中为employees数组赋值。为NameListService补充两个方法
public NameListService() { employees = new Employee[EMPLOYEES.length];//根据Data.EMPLOYEES数组的长度来确定员工人数
//为employees的每一个元素赋值一个员工对象信息 for (int i = 0; i < EMPLOYEES.length; i++) {
//二维数组的每一行的第1列是用来区分员工是属于什么类型的 int type = Integer.parseInt(EMPLOYEES[i][0]);
//这些属性是每个员工都有的。剩下的属性要根据员工的职务类型不同有所不同 int id = Integer.parseInt(EMPLOYEES[i][1]); String name = EMPLOYEES[i][2]; int age = Integer.parseInt(EMPLOYEES[i][3]); double salary = Integer.parseInt(EMPLOYEES[i][4]);
Equipment eq; double bonus; int stock;
//根据type的值,创建不同类型的员工对象 switch (type) { case PROGRAMMER: eq = createEquipment(i);//第i行的员工对应第i行的设备 //如果11,代表的是程序,就要创建程序员对象 employees[i] = new Programmer(id, name, age, salary, eq); break; case DESIGNER: eq = createEquipment(i); bonus = Integer.parseInt(EMPLOYEES[i][5]); employees[i] = new Designer(id, name, age, salary, eq, bonus); break; case ARCHITECT: eq = createEquipment(i); bonus = Integer.parseInt(EMPLOYEES[i][5]); stock = Integer.parseInt(EMPLOYEES[i][6]); employees[i] = new Architect(id, name, age, salary, eq, bonus, stock); break; default: //普通员工没有设备 employees[i] = new Employee(id, name, age, salary); break; } } }
private Equipment createEquipment(int index) { int type = Integer.parseInt(EQIPMENTS[index][0]); switch (type) { case PC: return new PC(EQIPMENTS[index][1], EQIPMENTS[index][2]); case NOTEBOOK: int price = Integer.parseInt(EQIPMENTS[index][2]); return new NoteBook(EQIPMENTS[index][1], price); case PRINTER: return new Printer(EQIPMENTS[index][1], EQIPMENTS[index][2]); } return null; } |
再次运行程序