Java检查你的一张卡是否远离皇家同花顺

时间:2017-11-29 15:10:44

标签: java

我试图建立一个功能,检查一手牌(5张牌)是否距离皇家同花顺只有一张牌。我能够实施一种方法来检查手是否是皇家同花顺。这是它的任何帮助:

public boolean royalFlush(List<Card> cards) {
    for(int i = 0; i<cards.size(); i++) {
        if(i == 0 && cards.get(i).getValue() != 1) {
            return false;
        }else if(i != 0 && cards.get(i).getValue()!=10){
            return false;
        }
    }

    for(int i = 0;i<cards.size()-1; i++) {
        if(cards.get(i).getSuit() !=cards.get(i+1).getSuit()) {
            return false;
        }
    }

    return true;
}

此功能假设手牌已经从王牌,王牌,杰克和最后10开始排序。它还假设牌中的牌总数为5.可以安全地假设皇家同花顺手将始终按任意输入方式排序。在我的Card.java类中,我有针对诉讼和等级的枚举:

public static enum Suit {
    DIAMOND, HEART, SPADE, CLUB
};
public static enum Rank {
    TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE
};

所以getValue方法如果if语句基本上将秩转换为实际的int。所以例如Rank 2是2,当rank是TEEN,JACK,QUEEN或KING时,值是10。

当你创建一张卡片时,你会给它一个等级和一个套装。例如:

Card card = new Card(Card.Rank.JACK, Card.Suit.HEART))

任何人都可以帮我一个功能,它会收到一张卡片列表并确定它是否远离皇家同花顺......如果是这样,它将返回卡片以防止套牌形式成为皇家卡片齐平。

提前多多感谢!

1 个答案:

答案 0 :(得分:0)

您现有的royalFlush方法并未注意传递的牌数,因此检查您是否只有一张牌的一个选项是:

boolean oneCardAway = (royalFlush(myHand) && myHand.size()==4);

但实际上,你只能拥有5张牌的皇家同花顺,所以你可以在你的方法中添加验证。