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

标签 java

我最近尝试玩二十一点游戏,但是每当我的牌组抽出一张 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/

相关文章:

java - 如何保证加密数据能够被正确解密?

java - 使用 Spring MVC 在 jsp 文件中显示 XML

java - apache poi , DataFormatter 修剪超出十位小数的值

java - JSP 和 OAUTH2 身份验证

java - ExecutorService线程安全

java - 可转让/URL导出: Transfering bookmark data between Java App and Mozilla

java - 使用 Java NIO 重命名非空目录问题

java - Google App Engine 应用程序 (Java) 中的 Facebook 登录

java - 上传到服务器后图像文件为空

java - 单个 java 线程在 mac 上使用两个内核?