我必須排序一個數組,這裏是我有的代碼。當我嘗試使用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