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
方法直接比较枚举值是否相等。您可以使用枚举文字的枚举顺序为等级提供自然排序,或者通过自定义构造函数为枚举值明确指定 等级值。
所以我有一张卡片 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
方法直接比较枚举值是否相等。您可以使用枚举文字的枚举顺序为等级提供自然排序,或者通过自定义构造函数为枚举值明确指定 等级值。