我必须排序一个数组,这里是我有的代码。当我尝试使用Arrays.sort()时,我收到了很多错误。任何人都知道我在做什么错了?这是我第一次用构造函数排序和使用数组。为什么这种排序数组不工作?
import java.util.Scanner;
import java.util.Arrays;
public class CoffeeDriver {
//main method
public static void main (String[] args){
Item[] itemObject = new Item[] {
new Item("Donut", .75),
new Item("Coffee", 1.00),
new Item("Bagel", 1.25),
new Item("Milk", 1.50),
new Item("Water", 2.00)};
Scanner input = new Scanner(System.in);
String decision;
System.out.println ("Welcome to Wings Coffee Shop");
System.out.println ("We have a great list of tasty items on our menu.");
System.out.println ("Would you like to see these items sorted by");
System.out.println ("name or by price? (n/p): ");
decision = input.nextLine();
sortName(itemObject);
sortPrice(itemObject);
}
//method to sort by item name and display
public static void sortName (Item[] itemObject){
Arrays.sort(itemObject);
System.out.println(itemObject);
}
//method to sort by item price and display
public static void sortPrice (Item[] array){
Arrays.sort(array);
for (int i = 0; i < array.length; i++){
System.out.println (array[i]);
}
}
}
public class Item
{
private String itemName = ""; //setting up the name
private double itemPrice=0.0; //Setting price variable
public Item(String name, double price) //Constructor
{
itemName = name;
itemPrice = price;
}
public String getitemName() //retuns name
{
return itemName;
}
public double getitemPrice() //returns price
{
return itemPrice;
}
public void setitemName(String name) //sets name
{
itemName = name;
}
public void setitemPrice (double price) //sets price
{
itemPrice = price;
}
}
做上述给了我这个错误: [诉讼; @ 4bb1aa65 异常在线程 “主要” java.lang.ClassCastException:项目不能转换为java.lang.Comparable的 \t在java.util中.Arrays.mergeSort(Arrays.java:1144) \t在java.util.Arrays.sort(Arrays.java:1079) \t在CoffeeDriver.sortPrice(CoffeeDriver.java:44) \t在CoffeeDriver.main(CoffeeDriver。 java:28) – allencoded 2011-02-13 03:53:31
听起来像你没有改变你的sortPrice方法。上面只修复你的sortName - 你需要为sortPrice做同样的事情,但是替换return o1.getitemName()。compareTo(o2.getitemName());用return(int)(o1.getitemPrice() - o2。getitemPrice()); – Voo 2011-02-13 04:00:36