Errore: "Eccezione nel thread" Main "java.lang.classcastException: ManyCard.Main $ Card non può essere scelto su java.lang.Comparable"

StackOverflow https://stackoverflow.com/questions/5852719

Domanda

Ciao a tutti. Sto cercando di ordinare una serie di numeri interi usando il metodo Array.Sort e continuo a ottenere l'errore sopra. Ho cercato esempi di questo metodo in uso e sto usando la stessa sintassi. Perché sono sicuro che sarà necessario, ecco il pezzo di codice che sto usando:

    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;
}
È stato utile?

Soluzione

Tuo Card La classe deve implementare Comparable<Card>. Questo è necessario in modo che il Arrays.sort Il metodo può chiamare il file compareTo(Card card) metodo che implementerai in Card e eseguire l'ordinamento in base al suo valore di ritorno.

Dal documentazione, compareTo Fa quanto segue:

Confronta questo oggetto con l'oggetto specificato per l'ordine. Restituisce un numero intero negativo, zero o un numero intero positivo in quanto questo oggetto è inferiore a, uguale o maggiore dell'oggetto specificato.

Altri suggerimenti

La scheda deve implementare l'interfaccia comparabile, in particolare il metodo di confronto.

Chiami Arrays.sort Su deck.cards Questa è una serie di oggetti della carta, non una serie di numeri interi. La tua classe di carte deve implementare comparabile.

Per utilizzare Arrays.Sort (Object [] O), l'oggetto che stai ordinando deve implementare l'interfaccia comparabile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top