所以我有一个卡片类,套牌类和游戏类。除了我试图将计算机生成的随机卡与玩家选择的卡片进行比较外,我已经掌握了所有内容。
这是我的String数组卡:
String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"Jack", "Queen", "King"};
这是我的compareTo方法,我从Comparable实现了将生成的卡与玩家选择的卡进行比较,并返回两者中的较高者:
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;
}
据我所知,只是比较String数组元素的第一个字符是不正确的,但我不知道如何使用正确的比较来返回更高的卡。有什么建议吗?
答案 0 :(得分:1)
我宁愿将enum
用于排名和套装。您可以直接将枚举值相互比较,以便与equals
方法相等。您可以使用枚举文字的枚举顺序为排名提供自然排序,或者通过枚举值的自定义构造函数明确指定排名值。
答案 1 :(得分:0)
在此方法中删除Card card1;
变量。它不仅不需要,它是危险的,并且冒着抛出NullPointerException的风险。而是使用当前实例中调用此方法的字段this
。
要确定排名,您需要使用for循环遍历数组,然后确定当前卡的字段相对于参数Card的字段的位置,然后返回相应的数字。