java - 如何根据该对象的条件从 java 中的数组列表返回(和删除)该对象

标签 java arraylist

为了上课,我需要制作一个纸牌游戏(桥牌)。

我有一个 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 中的位置)。

第一次在这里发帖,谢谢大家的帮助!

最佳答案

要返回相关卡牌,您需要循环遍历该花色中的所有卡牌并找到最大的一张,以及该最大卡的索引。检查完所有卡片后,归还值(value)最高的卡片。我认为这就是您想要的(因为您没有提供所有代码)。

int max = -1;
int maxCardIndex = -1;
int i;
for(i = 0; i < cardsOfSuit.size(); i++) {
    int cardVal = cardsOfSuit.get(i).getBridgeRank();
    if( cardVal > max) {
       maxCardIndex = i;
    }
}
return cardsOfSuit.get(maxCardIndex);

移除卡牌时,只需循环遍历手牌中的所有卡牌并检查该卡牌的详细信息,如果满足要求,则将其移除。 (您需要更新此内容,但它给出了一个示例)。

for(int i = 0; i < hand.size(); i++) {
    Card currentCard = hand.get(i);
    /* Check for what conditions you want to match in this if statement */
    if(currentCard.foo = "bar") {
       hand.remove(i);
    }
}

关于java - 如何根据该对象的条件从 java 中的数组列表返回(和删除)该对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30085948/

相关文章:

java - 将新数据推送到 Firebase 数据库时设置自定义键

java - Maven 项目测试无法找到 Cucumber 测试以在命令行上运行功能测试(适用于 Cucumber)

java - 如何在JAVA中调用构造函数时从列表中调用特定对象?

java - 在与 YObjects 的 ArrayList 一起使用的类中使用 Xobjects 的 ArrayList

firebase - List.contains()在Firestore文档列表上不起作用

java - 在 Java 中将字符串解析为 DOM 时出现问题

java - 如何从任何目录引用文件

java - Android Studio 中突然出现编译错误;错误 : cannot find symbol class ComputableLiveData

java - 输入验证后如何显示菜单?

java - 在Java中将我自己的数据类型添加到ArrayList