【问题标题】:How to add the values of two "Cards" in Java?如何在 Java 中添加两个“卡片”的值?
【发布时间】:2014-12-09 23:46:34
【问题描述】:

我正在做一个项目来模拟二十一点游戏中的第一笔交易。到目前为止,该程序创建了两张随机等级(ACE 到 KING)和随机花色的牌。我正在努力创建一个开关表或 if-else 阶梯将两张卡的附加值分配为变量分数。下面的代码在概念上代表了我想要做的事情,我只是想知道如何让它更简单。谢谢!

    public int Score()
{
    int score = 0;

    if (card1.rank() == TWO && card2.rank() == TWO){
        score = 4;            
    } else if (card1.rank() == THREE && card2.rank() == TWO){
        score = 5;
    } else if (card1.rank() == FOUR && card2.rank() == TWO){
        score = 6;
    } else if (card1.rank() == FIVE && card2.rank() == TWO){
        score = 7;
    } else if (card1.rank() == SIX && card2.rank() == TWO){
        score = 8;
    } else if (card1.rank() == SEVEN && card2.rank() == TWO){
        score = 9;
    } else if (card1.rank() == EIGHT && card2.rank() == TWO){
        score = 10;
    } else if (card1.rank() == NINE && card2.rank() == TWO){
        score = 11;
    } else if (card1.rank() == TEN && card2.rank() == TWO){
        score = 12;

    return score;
}

rank() 方法调用每张卡片的等级的整数值,但是,卡片等级被分配在不同的类中,如 TWO = 0, THREE = 1, FOUR = 2... QUEEN = 10, KING = 11, ACE = 12 所以我试图将“分数”分配为等于两张卡的实际值,加在一起。对不起,如果这令人困惑,我会回答任何问题。

【问题讨论】:

  • 创建Enum type,如果您已经讨论过这个主题。
  • 您只是将排名加在一起。只需执行该单一操作即可。

标签: java blackjack


【解决方案1】:

类似这样的:

enum Rank {
    ACE(1),
    TWO(2),
    THREE(3),
    // ...
    TEN(10),
    JACK(10),
    QUEEN(10),
    KING(10);

    private final int value;

    Rank(int value) {
        this.value = value;
    }
    int getValue() {
        return this.value;
    }
}

// ...
totalValue = card1.getRank().getValue() + card2.getRank().getValue();

如果您不想处理枚举,可以将等级表示为简单的整数。它不太安全,但对于简单和简短的代码来说还可以。

但无论您选择哪种表示,都需要注意 ace - 如果您有 ace,则会有另一个大于 10 的总和;如果您有两个,则将有一个大于20 的额外总和。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    相关资源
    最近更新 更多