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

标签 java performance poker

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

相关文章:

java - 将数据拟合到配电 (java)

javascript - Sweet Alert JS库-修改动画速度

Java排列

java - 用 Java 设计德州扑克牌局历史类

java - 需要帮助确定扑克牌(一对)

java - 有一个单独的persistence.xml 文件用于测试

java - 可选字符的正则表达式

java - 希尔密码加密中的 CBC

mysql - SQL查询成本的理论评估

performance - Hadoop Hive 慢查询