在家庭作业中,我得到了一个 Card 类,该类列举了 Rank 和 Suit 的类型。我需要比较两手扑克牌(每手牌是一个包含 5 张牌的 ArrayList
)并决定获胜者。
isStraight()
函数真的很困扰我,因为我必须在 A 之后重新开始计数。例如,
皇后、国王、王牌、二、三
仍然被认为是顺子。编写此功能的最佳方式是什么?
如果有帮助的话,这里是 Rank/Suit 枚举类型代码。
public enum Rank
{
TWO(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8), NINE(9),
TEN(10), JACK(11), QUEEN(12), KING(13), ACE(14);
private final int points;
private Rank(int points)
{
this.points = points;
}
public int points()
{
return this.points;
}
}
public enum Suit
{
DIAMONDS, CLUBS, HEARTS, SPADES;
}
最佳答案
您确实意识到,根据我玩过或听说过的任何扑克游戏的规则,顺子不能换行,对吗? A 可以是低位 [A,2,3,4,5] 或高位 [10,J,Q,K,A] 但它不能换行。根据这些规则(不是你的),我以前实现过类似的东西。基本上你对数组进行排序并遍历它,确保当前的卡片比前一张高。在第一次迭代中,如果它是 ace,那么您将明确检查 [A,2,3,4,5]。如果是,则返回 true,如果不是,则继续正常的直接逻辑。这应该让您朝着正确的方向前进。
关于java - 判断一手扑克牌是否顺子的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/530208/