带有数组的布尔方法,编码问题

时间:2014-11-20 20:42:32

标签: java arrays function methods boolean

我想帮助编写这些方法。每种方法都应检查一组5张存储为阵列的牌是否确定是扑克牌,如一对,两对,满屋等。这就是我到目前为止所拥有的。此外,sort(),从最小到最大的顺序排序,按俱乐部,钻石,心脏和黑桃的顺序排序。最后,我为括号中的任何格式问题道歉。谢谢。

private boolean isOnePair(){//checks if one pair exists---Done
    sort();
    for(int i=0;i<cards.length-2;i++){
        if(cards[i].compareTo(cards[i+1])==0){
            return true;
        }
        else{
            return false;
        }
    }
}

理论上,这个人会检查手中是否存在一对。我相信它已经完成并且有意义,但如果不是,请告诉我原因。

private boolean isTwoPair(){//check if two pair exists---
    sort();
    for(int i=0;i<cards.length-2;i++){
        if(cards[i].compareTo(cards[i+1])==0){
            return true;
        }
    }else{
        return false;
    }
}

这是我想要帮助的地方。它需要检查是否有两对不同。我假设我需要像isOnePair那样检查一些东西。此外,由于四种类型在技术上(在现实生活中,不是卡片术语)被认为是两对,这是一个问题吗?

private boolean isThreeOfAKind(){//check if three of a kind---Done
    sort(); 
    for(int i=0;i<cards.length-3;i++){
        if((cards[i].compareTo(cards[i+1])==0)
              &&(cards[i+1].compareTo(cards[i+2])==0)){
            return true;
        }else{
            return false;
        }
    }
}   

检查一张卡是否有三种。我相信这很好

private boolean isStraight(){//check if all in a row---Done
    sort();
    for(int i=0;i<cards.length-1;i++){
        if(cards[i]<cards[i+1]&&()cards[i+1]-cards[i])==1)){
            return true;
        }else{
            return false;
        }
    }
}

这将检查卡片是否为直片。因此它们按数字顺序排列,因为每张卡之间的差异必须为1。

private boolean isFlush(){//check if all have same suit---
    sort();
    for(int i=0;i<cards.length-1;i++){
    }
}

这也是我最想帮助的地方。我的麻烦只是如何检查西装的想法。我知道你们没有实际代码告诉你套装的价值,但是如果有人可以帮助我完成它的思考过程。

private boolean isFourKind(){//check if four of a kind---Done
    sort();
    for(int i=0;i<cards.length-4;i++){
        if((cards[i].compareTo(cards[i+1])==0)
                &&(cards[i+1].compareTo(cards[i+2])==0)
                &&(cards[i+2].compareTo(cards[i+3])==0)){
            return true;
        }else{
            return false;
        }
    }
}

检查四种。应该都很好。

private boolean isRoyalFlush(){//check if from 10-Ace and All of same suit---
    sort();
    for(int i=0;i<cards.length-1;i++){
    }
}

这应该是Straight和Flush的组合。但最后一个条件是插槽卡中的卡[0] == 10。

1 个答案:

答案 0 :(得分:1)

要检查您是否有两对,只需创建一个计数器,每次找到一对时递增 - 而不是立即返回true。如果您的计数器达到两个,则返回true。

此外,你担心两对和四种相似的都应该在这些方法之外处理。如同,请先检查您是否拥有最严格(或最高点)的手,并且只有在没有它的情况下才能检查下一个限制性手牌。

最后,如果没有Card类具有可见的套装变量(或返回套装的getter函数),则无法对此进行编程。一旦你有了,那么你可以很容易地检查冲洗,冲洗+直道等。实现之后,它应该类似于以下

int suit = cards[0].getSuit();
for (int i = 1; i < cards.length; ++i) {
    if (suit != cards[i].getSuit()) // checks to see if you have a card of a different suit
        return false;
}
return true; // suits of all cards are the same
PS:真的不知道扑克的规则。直线可以由不同套装的牌组成吗?