当前位置: 首页 > 知识库问答 >
问题:

整理一手扑克牌

凌经赋
2023-03-14

我试图根据等级和花色对一手扑克进行排序,但仍然没有完全排序,下面是代码,请注意花色是排序的,而不是等级

我的手在排序之前:

1:红桃之王2:四枚钻石3:七枚梅花4:梅花之王5:三枚红桃6:五枚钻石7:两枚梅花8:钻石之王9:四枚黑桃10:三枚钻石

排序后:

1:黑桃四枚2:红桃之王3:红桃三枚4:梅花两枚5:梅花之王6:梅花七枚7:钻石之王8:钻石五枚9:钻石四枚10:钻石三枚

卡对象

public int compareTo(Card that)
{
    if(this.suit.ordinal() > that.suit.ordinal())
    {
        return 1;
    }
    if(this.suit.ordinal() < that.suit.ordinal()) 
    {
        return -1;
    }       

    int rank1 = (this.rank.ordinal() + 11) % 13; //A>K
    int rank2 = (that.rank.ordinal() + 11) % 13;

    if(rank1 > rank2) return 1;
    if(rank1 < rank2) return -1;
    return 0;
}

玩家对象

public void tryTest()
{
    Card temp = new Card();
    for(int i=0;i<countCard;i++)
    {
        for(int j=0;j<countCard;j++)
        {
            if(playerHand[i].compareTo(playerHand[j]) > 0)
            {
                temp=this.playerHand[j];
                this.playerHand[j] = this.playerHand[i];
                this.playerHand[i] = temp;
            }
        }
    }
}

枚举秩

ACE,
TWO,
THREE,
FOUR,
FIVE,
SIX,
SEVEN,
EIGHT,
NINE,
TEN,
JACK,
QUEEN,
KING;

枚举诉讼

DIAMONDS,
CLUBS,
HEARTS,
SPADES;

共有1个答案

马欣荣
2023-03-14

研究一些标准的排序算法。您现在拥有的代码将所有内容与其他内容进行比较,然后在其中一个内容大于另一个内容时交换它们。但是,这可能会导致您向后交换:

1,2

2.

2,1

最接近您的算法是冒泡排序,它使用稍微不同的索引:

for(int i=0;i<countCard;i++)
{
    for(int j=0;j<countCard -1;j++)
    {
        if(playerHand[j].compareTo(playerHand[j+1]) > 0)
        {
            temp=this.playerHand[j+1];
            this.playerHand[j+1]= this.playerHand[j];
            this.playerHand[j] = temp;
        }
    }
}
 类似资料:
  • 题目描述: 给定一组数字,表示扑克牌的牌面数字,忽略扑克牌的花色,请按如下规则对这一组扑克牌进行整理: 步骤1、对扑克牌进行分组,形成组合牌,规则如下: 当牌面数字相同张数大于等于4时,组合牌为“炸弹”; 3张相同牌面数字 + 2张相同牌面数字,且3张牌与2张牌不相同时,组合牌为“葫芦”; 3张相同牌面数字,组合牌为“三张”; 2张相同牌面数字,组合牌为“对子”; 剩余没有相同的牌,则为“单张”;

  • 题目链接 NowCoder 题目描述 五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。 解题思路 // java public boolean isContinuous(int[] nums) { if (nums.length < 5) return false; Arrays.sort(nums); // 统计癞子数量 i

  • 仿造扑克牌效果的滚动cover flow控件,借鉴了Columns Controller的一些思路。支持ios4.3以上,内有详细的注释和demo。缺点,有点占用手机资源,望大牛给点意见。 [Code4App.com]

  • 本文向大家介绍写一个洗扑克牌的方法相关面试题,主要包含被问及写一个洗扑克牌的方法时的应答技巧和注意事项,需要的朋友参考一下 求教, 要比 更好吗?

  • 一、题目 从扑克牌中随机抽5张牌,判断是不是一个顺子, 即这5张牌是不是连续的。2~10为数字本身, A为1。 J为11、Q为12、 为13。小王可以看成任意数字。 二、解题思路 我们可以把5张牌看成由5个数字组成的数组。大、小王是特殊的数字,我们不妨把它们都定义为0,这样就能和其他扑克牌区分开来了。 接下来我们分析怎样判断5个数字是不是连续的,最直观的方法是把数组排序。值得注意的是,由于0可以当

  • 这里是雷格克斯队的新秀。 我需要一个与特定牌手匹配的正则表达式(满牌-包含一个等级的三张牌和另一个等级的两张牌的牌手),它应该将其识别为满牌,具有任意顺序的牌和所有牌级(23456789TJQKA)和套装(SHDC) 我甚至不确定regex是正确的工具,所以请告诉我,如果你认为我应该做些别的:) 示例字符串可以如下所示 "KD KC AH AC AD" (钻石之王,梅花之王,红心王牌,梅花王牌,钻