【发布时间】:2013-10-28 03:58:20
【问题描述】:
我正在尝试找出一种方法,在对每个受尊重的对象进行排序后重新分配它们的优先级。
每个对象都使用 setter 从用户那里获得优先级。然后我使用 getPriorities 创建一个 Int 数组,以便对它们进行排序。
Food[] list = new Food[3];
int[] priorityArray = {(int) ((Fruit) list[0]).getPriority(), (int) ((Fruit) list[1]).getPriority(), (int) ((Meat) list[2]).getPriority() };
对优先级整数数组进行排序后,如何将每个优先级重新分配给正确的对象?制作数组时,我将 getPriorities 转换为常规整数。
我会直接按 getPriorities 对优先级进行排序,如下所示:
Food temp;
System.out.println("\nsorted list:\n");
for (int i = 0; i < list.length; i++) {
for (int j = 1; j < (list.length - i); j++) {
if (((Fruit) list[j-1]).getPriority() > ((Fruit) list[j]).getPriority()||((Fruit) list[j-1]).getPriority() > ((Meat) list[j]).getPriority()||((Meat) list[j-1]).getPriority() > ((Fruit) list[j]).getPriority()||((Meat) list[j-1]).getPriority() > ((Meat) list[j]).getPriority())
{
temp = list[j - 1];
list[j - 1] = list[j];
list[j] = temp;
}
}
System.out.println(list[i]);
但是当我这样做时会出错:
线程“main”java.lang.ClassCastException 中的异常:homework4.orange 无法在 homework4.main4.main(main4.java:114) 中转换为 homework4.Meat
【问题讨论】:
-
您是否想按照优先级对水果列表进行排序?
-
它是一个食物列表,由水果(扩展食物)和肉类(也扩展食物)制成。