从多态数组打印

时间:2017-12-10 18:52:32

标签: java polymorphism

我是一名正在研究使用Java中的多态和数组的项目的学生。我有一组包含四种子类型的Person对象:Undergrad,Grad,Faculty和Staff。它们都有实例变量,如姓名,地址,电话号码和出生日期/招聘日期。我想在数组中选择Staff成员,并按照雇用这些教职员的顺序打印他们的toString()方法。

一些规定:

只能创建一个人物对象数组(否则这甚至不会很难),也不能在这个项目中使用除[Person]以外的任何东西。

我不能像sort()方法那样使用任何Array方法。我只允许使用基本的冒泡排序算法。

这是我制作的排序算法,但这不行。

for (int index = 0; index < personArray.length; index++)
{
  int min = index;   

  for (int secondIndex = index+1; secondIndex < personArray.length; secondIndex++)
  {
      if (personArray[secondIndex] instanceof Staff)
      {

        if (((Staff)personArray[secondIndex]).getHiringDate().compareTo(((Staff)personArray[min]).getHiringDate())<0)
        {
            min = secondIndex;
        }
      }  
   }
   Person temp = personArray[index];
   personArray[index] = personArray[min];
   personArray[min] = temp;
   }
   for(int index = 0; index < personArray.length; index++)
     {
        if(personArray[index] instanceof Staff)
        {
        writer.print("\n" + personArray[index].toString());
        }
     }    

我想在雇用他们的日期之前打印工作人员的字符串。如何遍历数组,找到Staff对象,然后将其与Array中的下一个Staff对象进行比较?该数组有100个元素,Staff,Undergrad,Grad和Faculty对象的顺序是随机的。

1 个答案:

答案 0 :(得分:0)

我会首先对Person数组进行冒泡。如果人员是员工,本科生,研究生或教师,您不需要区分。只需对它们进行排序。之后,您可以通过已排序的数组并仅打印Staff对象,就像您在

中一样
for(int index = 0; index < personArray.length; index++)
 {
    if(personArray[index] instanceof Staff)
    {
    writer.print("\n" + personArray[index].toString());
    }
 }