我正在使用一个名为Employee的类和两个名为SalariedEmployee和HourlyEmployee的子类。在我的代码的这部分中,我试图测试一个数组中的Employee是SalariedEmployee还是HourlyEmployee。但是,它仅从最初的Employee类打印属性,而不是从子类打印。instanceof数组Java
case 2: {
for(int index = 0; index < employees.length; index++) {
System.out.println(employees[index] + "\n");
if(employees[index] instanceof SalariedEmployee) {
SalariedEmployee aSalariedEmployee = (SalariedEmployee) employees[index];
System.out.println(aSalariedEmployee.toString());
}
else if(employees[index] instanceof HourlyEmployee) {
HourlyEmployee anHourlyEmployee = (HourlyEmployee) employees[index];
System.out.println(anHourlyEmployee.toString());
}
else {
System.out.println(" ");
}
}
System.out.println(" ");
break;
}
这里是我的代码数据收集部分:(编辑:更新= = =要在while循环)
int typeEmployee;
boolean loop = true;
OUTER:
while (loop == true) {
System.out.print("Enter 1 if the Employee is Salaried, 2 if Hourly: ");
typeEmployee = info.nextInt();
switch (typeEmployee) {
case 1:
System.out.print("Enter the Employee's Salary (with no commas): ");
float annSalary = info.nextFloat();
SalariedEmployee aSalariedEmployee = new SalariedEmployee(annSalary);
aSalariedEmployee.setAnnualSalary(annSalary);
break OUTER;
case 2:
System.out.print("Enter the Employee's Hourly Pay Rate: ");
float hPRate = info.nextFloat();
System.out.print("Enter the number of Hours Worked in a week: ");
float hWorked = info.nextFloat();
HourlyEmployee anHourlyEmployee = new HourlyEmployee(hPRate, hWorked);
anHourlyEmployee.setHourlyPayRate(hPRate);
anHourlyEmployee.setHoursWorked(hWorked);
break OUTER;
default:
System.out.println("Invalid Option.");
break;
}
}
我觉得像什么,我在这里失踪的,我需要以某种方式将typeEmployee与对象本身关联起来。有谁知道我该怎么做? 感谢您的帮助。
不应该'while(loop = true)'是'while(循环)'(没有可能有害的赋值)或'for(;;)'(简单的无限循环)? – MikeCAT
是的,这是我的一个粗心的错误,但它仍然不能回答更大的问题。 – mellerlite
您不需要检查'instanceof SalariedEmployee'等雇员[index] .toString()'和'((SalariedEmployee)employees [index]).toString()'调用完全相同的方法。 –