Error: "Excepción en el hilo" principal "java.lang.classcastException: ManyCard.Main $ La tarjeta no se puede emitir a java.lang.com Parable"

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

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;
}
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top