gpt4 book ai didi

java - 使用 for 循环修复 switch 语句的返回值

转载 作者:行者123 更新时间:2023-12-02 02:27:29 33 4
gpt4 key购买 nike

我最近尝试玩二十一点游戏,但是每当我的牌组抽出一张 A 时,它都会根据我手中的牌的总值(value)自动为 A 分配 11 的值,而不是 1 的值。

public class Deck {

private ArrayList<Card> cards;

public Deck(){
this.cards = new ArrayList<Card>();
}
public int valueOfCards(){
int totalValue = 0;
int aces = 0;

for(Card aCard : this.cards){
switch(aCard.getValue()){
case TWO: totalValue += 2; break;
case THREE: totalValue += 3; break;
case FOUR: totalValue += 4; break;
case FIVE: totalValue += 5; break;
case SIX: totalValue += 6; break;
case SEVEN: totalValue += 7; break;
case EIGHT: totalValue += 8; break;
case NINE: totalValue += 9; break;
case TEN: totalValue += 10; break;
case JACK: totalValue += 10; break;
case QUEEN: totalValue += 10; break;
case KING: totalValue += 10; break;
case ACE: totalValue += 11 ; break;
}
}
for(int i = 0; i < aces; i++){
if(totalValue > 10){
totalValue += 1;
}
else{
totalValue += 11;
}
}
return totalValue;
}
}

最佳答案

aces 的值永远不会被修改,因此 switch 之后的循环不会执行任何操作。

开关中,如果该牌是 ACE,你不想加11。您想要增加 aces 中 A 的数量,并让下一个循环完成其工作。

也就是说,这一行更改应该可以修复您的程序:

case ACE: aces++ ; break;

关于java - 使用 for 循环修复 switch 语句的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47605659/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com