我是一名正在研究使用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对象的顺序是随机的。
答案 0 :(得分:0)
我会首先对Person数组进行冒泡。如果人员是员工,本科生,研究生或教师,您不需要区分。只需对它们进行排序。之后,您可以通过已排序的数组并仅打印Staff对象,就像您在
中一样for(int index = 0; index < personArray.length; index++)
{
if(personArray[index] instanceof Staff)
{
writer.print("\n" + personArray[index].toString());
}
}