Что не так с моим классом Card, я не хочу, чтобы он был абстрактным - PullRequest
0 голосов
/ 31 января 2019

Я должен сделать этот класс сопоставимым, чтобы я мог сравнивать карты.Каждый раз, когда я пытаюсь это сделать, меня постоянно просят сделать карту абстрактной, точная ошибка: «Карта не является абстрактной и не переопределяет абстрактный метод compareTo (Card) в Comparable»

        package p2cw1;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Comparator;

public class Card implements Serializable, Comparable<Card> {

    static final long serialVersionUID = 100L;

    public enum Suit {

        CLUBS, SPADES, DIAMONDS, HEARTS
    };

    public enum Rank {

        TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE
    };

    public Rank rank;
    public Suit suit;
    public Card Compare1;
    public Card Compare2;

    public Card(Rank rank, Suit suit) {
        this.rank = rank;
        this.suit = suit;
    }

    public Rank rank() {
        return rank;
    }

    public Suit suit() {
        return suit;
    }

    public String toString() {
        return rank + " of " + suit;
    }

    public Rank getNext(Rank r) {
        this.rank = r;
        int s = rank.ordinal()+1;
        Card.Rank result = Card.this.rank();
        System.out.println(s);
        return result;
    }
    }

Мои извинения, если я это сделалнеправильно размещать код на этом сайте.Первый раз, используя его

1 Ответ

0 голосов
/ 31 января 2019

Если ваш класс реализует Comparable, вам нужно реализовать метод int compareTo (T o).В противном случае ваш класс не завершен, и поэтому компилятор считает, что он должен быть абстрактным.

Обычно, если вы не хотите, чтобы он был абстрактным, добавьте этот метод: -

@Override
public int compareTo(Card other) {
    return <some code to determine which card is "higher">();
}

Ваш метод должен возвращать отрицательное целое число, ноль или положительное целое число, если эта карта меньше, равна или больше, чем карта other.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...