错误:“线程中的异常”主“java.lang.ClassCastException:manycard.Main $ Card无法强制转换为java.lang.Comparable”

时间:2011-05-02 01:24:33

标签: java classcastexception playing-cards

嘿所有人。我正在尝试使用Array.sort方法对整数数组进行排序,并且我不断收到上述错误。我已经查找了这个方法的示例,我正在使用相同的语法。因为我确定它是必要的,这里是我正在使用的代码:

    public class Card
    {
int suit, rank;
public Card () {
this.suit = 0; this.rank = 0;
        }
public Card (int suit, int rank) {
this.suit = suit; this.rank = rank;
     }

}
    class Deck {
Card[] cards;
public Deck (int n) {
cards = new Card[n];
     }
public Deck () {
  cards = new Card[52];
int index = 0;
for (int suit = 0; suit <= 3; suit++) {
    for (int rank = 1; rank <= 13; rank++) {
  cards[index] = new Card (suit, rank);
index++;
    }
        }
  }

public int median (Deck deck) {
Arrays.sort(deck.cards);
return deck.cards[2].rank;
}

4 个答案:

答案 0 :(得分:0)

Card需要实现Comparable接口,特别是compareTo方法。

答案 1 :(得分:0)

您的Card课程需要实施Comparable<Card>。这是必需的,以便Arrays.sort方法可以调用您将在compareTo(Card card)中实现的Card方法,并根据其返回值进行排序。

documentationcompareTo执行以下操作:

  

将此对象与。进行比较   订单的指定对象。返回一个   负整数,零或正数   这个对象小于的整数,   等于或大于   指定的对象。

答案 2 :(得分:0)

您在Arrays.sort上调用deck.cards,这是一个Card对象数组,而不是整数数组。您的Card类需要实现可比性。

答案 3 :(得分:0)

为了使用Arrays.sort(Object [] o),您要排序的对象必须实现Compareable接口。