如何在Java中添加两个“卡”的值?

我正在研究一个模拟二十一点游戏中的第一笔交易的项目。 到目前为止,该程序创建了两张随机排名(ACE to 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 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(); 

如果您不想处理枚举,则可以将排名表示为简单整数。 它不太安全,但对于简单和简短的代码是可以的。

但无论你选择哪种代表,你都需要注意一点 – 如果你有一个王牌,那么还会有另外一个10倍的总和; 如果你有两个,那么将会增加20个额外的金额。