java - 尝试更改卡的值(value)

标签 java arraylist

我正在为学校制作一个二十一点游戏,现在我们正在研究 Hand 类(添加一张牌,并检查用户是否失败/获胜/等)

我正在研究 addCard 方法

/**
 * Adds a card from the deck to the hand
 */
public void addCard(Card c)
{
    hand.add(c);
    if(getHandValue() > 21)
    {
        for(int i = 0; i < hand.size()-1; i++)
        {
            if(hand.get(i).equals("Ace") == true && getHandValue() > 21)
            {
                c.changeAce();
            }
        }
    }
}

我的问题是,当我尝试将 Ace、Two、Ace 添加到我的牌中时,它并没有像应有的那样将值从 11 更改为 1,它仍然将其加起来为 11 2 11,然后告诉我这手牌失败了。

有人能发现问题吗?

谢谢

最佳答案

您正在迭代 i < hand.size()-1这意味着它将跳过最后一个元素,因此最后一个 A 不会被更改。

尝试i < hand.size()

关于java - 尝试更改卡的值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35472772/

相关文章:

java - 使用java识别系统中的临时文件

java - 从脚本启动 Spring boot 应用程序

java - ARM架构上如何解决 'Maven cannot resolve dependencies'?

PHP 数组 : how to print only array values but not keys

java - 如何在不覆盖第一行的情况下将相同的对象保存在数组列表中

java - 在一个类中调用 getName() 方法有效,但在另一个类中则无效

java - Jerry doc.$ getelementsbyclassname

java - 如何让我的回收器适配器检索发送到 firebase 数据库的消息?

java - 将已排序 ArrayList 中的重复项分组到另一个 ArrayList 中

java - 将列表添加到二维数组列表