【发布时间】:2015-05-06 19:34:21
【问题描述】:
为了上课,我需要做一个纸牌游戏(桥牌)。
我有一个 Card 类,它定义了一张卡片的所有属性,还有一个 Deck 类,它生成了 52 张卡片。还有一个 Hand 类,可以将牌组中的牌随机分配给四手牌。
现在我需要创建一个方法,将玩家的手牌和目标花色作为输入,并返回该花色中排名最高的牌。我有:
private Card highestRankofSuit(ArrayList<Card> hand, char suit)
{
ArrayList<Card> cardsOfSuit = null;
for(int i = 0; i < hand.size(); i++)
{
if (hand.get(i).getSuit() == suit)
{
cardsOfSuit.add(hand.get(i));
}
}
return cardsOfSuit(max(Card.getBridgeRank())); //This is wrong because it only returns one int
}
我该怎么做才能退回所需的卡?此外,我还需要知道如何从 ArrayList 中删除特定的 Card 对象(基于 Card 的等级和花色等信息,但事先不知道它在 ArrayList 中的位置)。
第一次在这里发帖,感谢大家的帮助!
【问题讨论】:
-
请包含更多代码,例如您的
.getBridgeRank()函数。就目前而言,这个问题还不清楚。 -
知道要移除的卡片的条件,为什么不能遍历支持每手牌的 ArrayList 并搜索符合条件的卡片?一旦找到它,您就知道 ArrayList 中的位置,然后可以使用 remove() 方法。对吗?
-
ArrayList
有一个 remove(Object) 方法,用于删除对象的第一个实例。但请确保您已覆盖 Card 的 equals() 方法,因为 remove() 会删除列表中的对象,即“.equals()”是您提供给 remove() 方法的参数。此方法返回一个布尔值,让您知道它是否找到并删除了指定的对象。