다음 클래스에서는 급여 시스템에서 Employees 세부 정보를 인쇄하려고합니다. 포터, 약사 및 외과 의사는 모두 직원으로부터 상속받습니다.Java 다형성 처리 : 잘못된 출력?
그러나 배열에 추가 된 첫 번째 직원의 세부 정보 만 반복적으로 인쇄합니다. 예상되는 출력을 알고 있지만 그것을 재현 할 수 없습니다.
등급 :
public class PayrollManager {
public static final int HOURS_PER_WEEK = 35;
public static Employee[] employees = new Employee[6];
public static void main(String[] args) {
// create all employees
Employee generalEmployee = new Employee("Odd", "Jobbie", 10.50);
Employee porter1 = new Porter("Ivana", "Patient", 10.50, "Royal");
Employee porter2 = new Porter("Amanda", "Pushabed", 10.50, "BCH");
Employee surgeon1 = new Surgeon("Jack", "Ripper", 55.25, "Renal",
650.00);
Employee surgeon2 = new Surgeon("Edward", "Lister", 55.25, "Vascular",
800.00);
Employee pharmacist = new Pharmacist("Poppy", "Pill", 30.50, 7, 750);
// call method to handle adding the employees to the list
addEmployeeToList(generalEmployee);
addEmployeeToList(porter1);
addEmployeeToList(porter2);
addEmployeeToList(surgeon1);
addEmployeeToList(surgeon2);
addEmployeeToList(pharmacist);
// show all employees
displayAllEmployees();
System.out.println();
// run payroll
processWeeklyPayroll();
}// end of main
/**
* Method to add an Employee to an array
*
* @param e
*/
public static void addEmployeeToList(Employee e) {
for (int loop = 0; loop < employees.length; loop++) {
// check there is a space
if (employees[loop] == null) {
// add it to free space
employees[loop] = e;
}
}
}
public static void displayAllEmployees() {
for (Employee e : employees) {
if (e != null) {
e.displayAll();
System.out.println();
}
}
}
public static void processWeeklyPayroll() {
for (Employee e : employees) {
if (e != null) {
e.calculateWeeklySalary(HOURS_PER_WEEK);
// line break
System.out.println();
}
}
}
}
전류 출력 : 예상 출력 등 즉, 테스트 데이터의 각 구성원 각각 약사, 의사의 세부 사항을 인쇄해야한다는
[Employee] Odd Jobbie 10.500000
[Employee] Odd Jobbie 10.500000
[Employee] Odd Jobbie 10.500000
[Employee] Odd Jobbie 10.500000
[Employee] Odd Jobbie 10.500000
[Employee] Odd Jobbie 10.500000
Odd Jobbie [Base Rate Employee] : 35.000000hrs * £10.500000= £367.500000
Odd Jobbie [Base Rate Employee] : 35.000000hrs * £10.500000= £367.500000
Odd Jobbie [Base Rate Employee] : 35.000000hrs * £10.500000= £367.500000
Odd Jobbie [Base Rate Employee] : 35.000000hrs * £10.500000= £367.500000
Odd Jobbie [Base Rate Employee] : 35.000000hrs * £10.500000= £367.500000
Odd Jobbie [Base Rate Employee] : 35.000000hrs * £10.500000= £367.500000
주 ...
내 생각에 변수는 모두 정적 인 것 같습니다. 관련 수업을 보여주세요 - 이상적으로는 짧지 만 문제를 보여주는 완전한 * 프로그램입니다. (그리고 이상적으로, 통화 값에 대해'double'을 사용하는 것을 중지하십시오 ...) –