Java: 比较一副牌中两张创建的牌

Java: Comparing two created cards from a deck

所以我有一张卡片 class、一副牌 class 和一个游戏 class。我把所有东西都放在了位置上,只是我试图将计算机生成的随机卡片与玩家选择的卡片进行比较。

这是我的卡片字符串数组:

String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10",
                            "Jack", "Queen", "King"};

这是我的 compareTo 方法,我从 Comparable 中实现了该方法,用于比较生成的卡片与玩家选择的卡片,return 两者中较高的一个:

    public int compareTo(Card crd)
{
    Card card1;
    int card1Suit = (int) (Math.random() * 4);
    int card1Rank = (int) (Math.random() * 13);
    card1 = new Card(a,b);
    if(card1.getRank().charAt(0) < crd.getRank().charAt(0))
    {
        return 0;
    }

    return 1;
}

我知道只比较字符串数组元素的第一个字符是不正确的,但我不知道使用什么来正确比较 return 更高的卡片。有什么建议吗?

删除此方法中的 Card card1; 变量。它不仅不需要,而且很危险,并且有抛出 NullPointerException 的风险。而是使用调用此方法的当前实例中的字段,this

要确定排名,您需要使用 for 循环遍历数组,然后确定当前卡片字段相对于参数卡片字段的位置,然后 return 适当的数字。

我宁愿对等级和花色都使用 enum。您可以使用 equals 方法直接比较枚举值是否相等。您可以使用枚举文字的枚举顺序为等级提供自然排序,或者通过自定义构造函数为枚举值明确指定 等级值