Java 尝试更改卡的值

Java 尝试更改卡的值,java,arraylist,Java,Arraylist,我正在为学校制作一个21点游戏,现在我们正在进行手牌课程(添加一张卡,并检查用户是否半身像/赢了/等等) 我正在研究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++)

我正在为学校制作一个21点游戏,现在我们正在进行手牌课程(添加一张卡,并检查用户是否半身像/赢了/等等)

我正在研究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();
            }
        }
    }
}
/**
*将牌组中的一张牌添加到手牌
*/
公共无效添加卡(卡c)
{
另加(c);
如果(getHandValue()>21)
{
对于(int i=0;i21)
{
c、 changeAce();
}
}
}
}
我的问题是,当我尝试将和Ace,2,Ace添加到我的手上时,它并没有像应该的那样将值从11更改为1,它仍然将其相加为11 2 11,然后告诉我手坏了

有人能找到问题吗


谢谢您在
i
时进行迭代,这意味着它将跳过最后一个元素,因此最后一个ace不会被更改


尝试
i

您正在迭代,而
i
这意味着它将跳过最后一个元素,因此不会更改最后一个ace


尝试
i

Post。您只需执行
if(hand.get(i).equals(“Ace”)&&getHandValue()>21)
您的意思是什么?它不需要for循环,这样它就可以遍历整个arraylist并检查卡片了吗?@Ian-你能编辑你的问题并提供getHandleValue和Card.changeAce函数的实现吗?Post。你只需执行
if(hand.get(i).equals(“Ace”)和&getHandValue()>21)
你的意思是什么?它不需要for循环,这样它就可以遍历整个arraylist并检查卡片了吗?@Ian-你能编辑你的问题并提供getHandleValue和Card.changeAce函数的实现吗?我刚刚试过,但它仍然没有改变ace。哎呀,需要添加一个等号,只是修复了它。谢谢你的帮助,我刚刚试过,但它仍然没有改变王牌。哎呀,需要加一个等号,就把它修好了。谢谢你的帮助