扑克牌的排序程序

这个程序本来一开始我想的是把两副牌输入到一个文本文件中,然后从中取出30张,然后排序.其实不用存入文件中,只用构造这两副牌,知道它是存在的就可以了...

class TestPuker
{
    public static void main (String[] args){
 PukerControl pc=new PukerControl();
 int times=2;
 Puker[][] p=pc.getPuker(times,30,2);
 pc.SortPuker(p);
 for(int i=0;i<times;i++){
  for(int j=0;j<30;j++){
   System.out.print(p[i][j].PukerInfo());
   System.out.print("  ");
  }
  System.out.println();
 }
    }
}

class PukerControl
{

    PukerControl()
    {
    }

    public Puker[][] getPuker(int i, int j, int k)
    {
        Puker apuker[][] = new Puker[i][j];
        int l = 52 * k;
        int ai[] = new int[l];
        for(int i1 = 0; i1 < ai.length; i1++)
            ai[i1] = i1 + 1;

        for(int j1 = 0; j1 < i; j1++)
        {
            for(int k1 = 0; k1 < j; k1++)
            {
                int l1 = (int)(Math.random() * (double)l);//随机的读取0~103之间的数
                int i2 = ai[l1];//使l1每个数都加1,变成随机读取1~104之间的数
                int j2 = (i2 / 13) % 4;//随机的从1~4中取数
                int k2 = i2 % 13;//随机的从1~13中取数
                ai[l1] = ai[l - 1];//     数组个数也-1

                 l--;//每取出一个后,总牌数-1

                apuker[j1][k1] = new Puker();
                apuker[j1][k1].pic = j2;
                apuker[j1][k1].num = k2;
            }

        }

        return apuker;
    }

    public void SortPuker(Puker apuker[][])
    {
        for(int i = 0; i < apuker.length; i++)
        {
            for(int j = 0; j < apuker[i].length - 1; j++)
            {
                for(int k = j + 1; k < apuker[i].length; k++)
                    if(apuker[i][j].num < apuker[i][k].num || apuker[i][j].num == apuker[i][k].num && apuker[i][j].pic > apuker[i][k].pic)
                    {
                        Puker puker = apuker[i][j];
                        apuker[i][j] = apuker[i][k];
                        apuker[i][k] = puker;
                    }

            }

        }

    }
}

class Puker
{
    public int pic;
    public int num;
    Puker()
    {
    }

    public String PukerInfo()
    {
        String s = "";
        String s1 = "";
        switch(pic)
        {
        case 0: // '/0'
            s = "/u9ED1/u6843";
            break;

        case 1: // '/001'
            s = "/u7EA2/u6843";
            break;

        case 2: // '/002'
            s = "/u6885/u82B1";
            break;

        case 3: // '/003'
            s = "/u65B9/u7247";
            break;
        }
        switch(num)
        {
        case 12: // '/f'
            s1 = "A";
            break;

        case 11: // '/013'
            s1 = "K";
            break;

        case 10: // '/n'
            s1 = "Q";
            break;

        case 9: // '/t'
            s1 = "J";
            break;

        default:
            s1 = (new Integer(2 + num)).toString();
            break;
        }
        return s + s1;
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值