Error: "Excepción en el hilo" principal "java.lang.classcastException: ManyCard.Main $ La tarjeta no se puede emitir a java.lang.com Parable"
-
27-10-2019 - |
Pregunta
Oigan todos. Estoy tratando de ordenar una variedad de enteros usando el método Array.Sort, y sigo recibiendo el error anterior. He buscado ejemplos de este método en uso, y estoy usando la misma sintaxis. Porque estoy seguro de que será necesario, aquí está el bit de código que estoy 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;
}
Solución
Su Card
la clase necesita implementar Comparable<Card>
. Esto es necesario para que el Arrays.sort
El método puede llamar al compareTo(Card card)
método que implementará en Card
y haga la clasificación en función de su valor de retorno.
Desde el documentación, compareTo
hace lo siguiente:
Compara este objeto con el objeto especificado para el orden. Devuelve un entero negativo, cero o un entero positivo ya que este objeto es menor que, igual o mayor que el objeto especificado.
Otros consejos
La tarjeta necesita implementar la interfaz comparable, específicamente el método Compareto.
Llama Arrays.sort
en deck.cards
Esa es una variedad de objetos de tarjeta, no una matriz de enteros. La clase de su tarjeta necesita implementar comparable.
Para usar matrices.sort (objeto [] o), el objeto que está clasificando debe implementar la interfaz comparable.