gpt4 book ai didi

java - 判断一手扑克牌是否顺子的函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:48:17 25 4
gpt4 key购买 nike

在家庭作业中,我得到了一个 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/

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