Java 需要一些关于isFlush和isThreeKind方法的帮助,扑克类型的程序

Java 需要一些关于isFlush和isThreeKind方法的帮助,扑克类型的程序,java,Java,这不是完整的代码,但正是这些部分导致了问题。我已经编写了isFlush和isThreeKind,但是出于某种原因,它们似乎总是返回true,除非第一个return语句更改为“returnfalse”,在这种情况下,它们总是返回false。这导致了一个有趣的问题,即代码声明3000/3000手是flushes,并且包含三种类型,我相当确定这是不可能的 编辑:是的,我是个白痴,我忘了链接到代码的粘贴箱 现在您已经添加了代码,似乎每次都在传递整个组。如果是这样的话,根据你的逻辑,你总是会有3套相同的衣

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

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


现在您已经添加了代码,似乎每次都在传递整个组。如果是这样的话,根据你的逻辑,你总是会有3套相同的衣服(因为甲板上每套衣服有4套)和一套齐平的衣服(因为你的逻辑是>=5)。我怀疑如果您将flush中的逻辑改为
==5
,它将始终返回false

也许你的牌组需要一个
Card[]randomHand(int handSize)
方法来给你随机的一手牌,然后测试它?它甚至可以是一个更小的
甲板
对象

原始答复如下: 这是我的快速和肮脏(可能效率低下)版本的那些。。。如果看不到您所拥有的,就很难帮助调试它

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;
}
boolean isFlush(卡片[]卡片){
用于(卡c:卡){
如果(c.suit!=cards[0].suit)返回false;
}
返回true;
}
/**
*返回集合的值,如果不存在三个集合,则返回0
*/
int isThreeKind(卡片[]卡片){
对于(int i=0;i=3)返回i.value;//返回卡的值
}
返回0;//0表示没有值
}
int sumOfType(int值,卡片[]卡片){
整数和=0;
对于(卡c:卡)如果(值==c.value)和++;
回报金额;
}

现在您已经添加了代码,似乎每次都要经过整个甲板。如果是这样的话,根据你的逻辑,你总是会有3套相同的衣服(因为甲板上每套衣服有4套)和一套齐平的衣服(因为你的逻辑是>=5)。我怀疑如果您将flush中的逻辑改为
==5
,它将始终返回false

也许你的牌组需要一个
Card[]randomHand(int handSize)
方法来给你随机的一手牌,然后测试它?它甚至可以是一个更小的
甲板
对象

原始答复如下: 这是我的快速和肮脏(可能效率低下)版本的那些。。。如果看不到您所拥有的,就很难帮助调试它

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;
}
boolean isFlush(卡片[]卡片){
用于(卡c:卡){
如果(c.suit!=cards[0].suit)返回false;
}
返回true;
}
/**
*返回集合的值,如果不存在三个集合,则返回0
*/
int isThreeKind(卡片[]卡片){
对于(int i=0;i=3)返回i.value;//返回卡的值
}
返回0;//0表示没有值
}
int sumOfType(int值,卡片[]卡片){
整数和=0;
对于(卡c:卡)如果(值==c.value)和++;
回报金额;
}

很有趣,但是你能发布一些代码吗?也许你应该发布它的代码?废话,很抱歉。我是个白痴。也许詹姆斯是世上最幸运的人!在下一场灾难中,我能站在你身边吗?:)很有趣,但是你能发布一些代码吗?也许你应该发布它的代码?废话,很抱歉。我是个白痴。也许詹姆斯是世上最幸运的人!在下一场灾难中我能站在你身边吗?:)。。。哇,我都没意识到。我有一个方法来达到这个确切的目的,我只是没有看到它是一个完整的甲板。天哪,这是个愚蠢的问题。谢谢。@James我们有时都这样做。有一次,我花了两个小时制作了一篇帖子,确保我的所有基础都被套接字通信覆盖了,结果我忘了刷新流。相信我,我觉得自己傻得可笑。编程中有很多繁琐的工作,愚蠢的事情会把我们绊倒。在典型的8小时工作日中,我们花了4-5个小时来解决“下一个路障”。这没什么好羞愧的,这只是编程的本质。通过更多的练习,你将学会发现那些愚蠢的错误,并更快地前进。:-。。。哇,我都没意识到。我有一个方法来达到这个确切的目的,我只是没有看到它是一个完整的甲板。天哪,这是个愚蠢的问题。谢谢。@James我们有时都这样做。有一次,我花了两个小时制作了一篇帖子,确保我的所有基础都被套接字通信覆盖了,结果我忘了刷新流。相信我,我觉得自己傻得可笑。编程中有很多繁琐的工作,愚蠢的事情会把我们绊倒。在典型的8小时工作日中,我们花了4-5个小时来解决“下一个路障”。这没什么好羞愧的,这只是编程的本质。通过更多的练习,你将学会发现那些愚蠢的错误,并更快地前进。:-)