java - 需要 isFlush 和 isThreeKind 方法、扑克类型程序的一些帮助

标签 java

这不是完整的代码,但它是导致问题的部分。我已经编写了 isFlush 和 isThreeKind,但由于某种原因,它们似乎总是返回 true,除非第一个 return 语句更改为“return false”,在这种情况下它们总是返回 false。这导致了一个有趣的问题,代码声明 3000/3000 手牌是同花并且包含三张同花,我相当确定这是不可能的。

编辑:是的,我是个白痴,我忘记链接到代码的粘贴箱。

http://pastebin.com/bahwrm7Y

最佳答案

现在您已经添加了代码,看起来您每次都在传递整个牌组。如果是这种情况,按照你的逻辑,你将始终拥有 3 个同花色(因为牌组中每种花色有 4 个)和同花(因为你的逻辑 >= 5)。我怀疑如果你将flush中的逻辑改为 == 5 ,它总是会返回 false。

也许你的牌组需要一个 Card[] randomHand(int handSize) 方法来为你提供随机的一手牌,并对其进行测试?它甚至可以是一个尺寸较小的 Deck 对象。

原始答案如下:

这是我的快速而肮脏(并且可能效率低下)的版本...如果不了解您拥有的内容,将很难帮助调试它!

boolean isFlush(Card[] cards) {
    for(Card c : cards) {
        if(c.suit != cards[0].suit) return false;
    }
    return true;
}

/**
 * returns the value of the set, or 0 if no three-set exists
 */
int isThreeKind(Card[] cards) {
    for(int i = 0; i < cards.length - 2; i++) {
        if(sumOfType(i.value,cards) >= 3) return i.value; // return the value of the card
    }
    return 0; // 0 indicates no value
}

int sumOfType(int value, Card[] cards) {
    int sum = 0;
    for(Card c : cards) if(value == c.value) sum++;
    return sum;
}

关于java - 需要 isFlush 和 isThreeKind 方法、扑克类型程序的一些帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5846041/

相关文章:

java - Spark java.lang.NoClassDefFoundError : com/datastax/driver/core/ProtocolOptions$Compression 中的 Spark-cassandra-connector 错误

JavaFX:自定义等于方法导致 TableView 中没有刷新

c# - Google Protocol Buffer - 将消息从 C# 客户端发送到 java 服务器

java - 通用决策树算法代码实现

java - 将类似 block 的序列解析为 Map<String, Type>

java - 如何使用非法索引访问数组

java - 谁来收集垃圾或卸载垃圾收集器

java - 打破 Java redux 中的嵌套循环

java - JNLP SingleInstanceService 在命令行 JAR 应用程序中的使用

java - 覆盖 jclouds 中的身份验证行为