Ошибка: «Исключение в потоке» основное - PullRequest
0 голосов
/ 02 мая 2011

Привет всем.Я пытаюсь отсортировать массив целых чисел, используя метод 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 голосов
/ 02 мая 2011

Чтобы использовать Arrays.sort (Object [] o), сортируемый объект должен реализовывать интерфейс Compareable.

0 голосов
/ 02 мая 2011

Ваш Card класс должен реализовать Comparable<Card>. Это необходимо для того, чтобы метод Arrays.sort мог вызвать метод compareTo(Card card), который вы реализуете в Card, и выполнить сортировку на основе его возвращаемого значения.

Из документации , compareTo делает следующее:

Сравнивает этот объект с указанный объект для заказа. Возвращает отрицательное целое число, ноль или положительное целое число, так как этот объект меньше, чем равно или больше, чем указанный объект.

0 голосов
/ 02 мая 2011

Вы вызываете Arrays.sort на deck.cards, который является массивом объектов Card, а не массивом целых чисел. Класс вашей карты должен быть сопоставим.

0 голосов
/ 02 мая 2011

На карте должен быть реализован интерфейс Comparable, в частности метод CompareTo.

...