我正在为学校制作一个二十一点游戏,现在我们正在研究 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/