比较枚举中的排名

mon*_*ica 6 java enums

我有以下代表CardRank的枚举

public enum CardRank
{
    DEUCE('2'), TREY('3'), FOUR('4'), FIVE('5'), SIX('6'), SEVEN('7'),
    EIGHT('8'), NINE('9'), TEN('T'), JACK('J'), QUEEN('Q'), KING('K'), 
    ACE('A');

    private char symbol;

    private CardRank(char symbol)
    {
        this.symbol = symbol;
    }

    public char getSymbol()
    {
        return this.symbol;
    }
}
Run Code Online (Sandbox Code Playgroud)

CardRank以升序表示.我需要比较排名才能知道哪个排名大于另一个排名.我可以使用>带有数值的运算符,但不能使用char值.

// this will print out TRUE for all numerical values compared 
// but FALSE for the chars
if (card.getRank().getSymbol() > anotherCard.getRank().getSymbol()) {
    System.out.println("true");
} else {
    System.out.println("false");
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

JB *_*zet 15

if (card.getRank().compareTo(anotherCard.getRank()) > 0)
Run Code Online (Sandbox Code Playgroud)

是你需要的.

您可以使用序数:

if (card.getRank().ordinal() > anotherCard.getRank().ordinal())
Run Code Online (Sandbox Code Playgroud)

枚举具有由它们的序数定义的自然顺序.枚举的序数是根据其在声明中的位置而归因的.所以DEUCE有序数0,TREY有序数1等.