试图更改卡片的价值

时间:2016-02-18 04:22:30

标签: 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然后告诉我手捣毁。

有人能找到问题吗?

由于

1 个答案:

答案 0 :(得分:0)

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

尝试i < hand.size()