洗牌

题目要求:按顺序添加扑克牌,然后实现洗牌功能


java实现代码如下:

//导入util包

import java.util.*;
class Demo
{
    public static void main(String[] args)
    {

        //定义两个数组一个存储扑克牌的花色,一个存储扑克牌的点数
        String[] color = {"黑桃","红桃","梅花","方块"};
        String[] number = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        StackList list = new StackList();

       //利用双重for循环,按花色和点数从小到大添加到list集合中
        for (int i = 0;i < 4 ;i++ )
        {
            for (int j = 0;j < 13 ;j++ )
            {
                list.add(new Poker(color[i],number[j]));
            }
        }

       //输出按顺序添加好扑克牌的集合
        System.out.println(list.list);

       //创建一个随机数对象
        Random random = new Random();
        int a = 0;

        //创建一个新的集合用来存储洗好的扑克牌
        StackList newList = new StackList();

        //循环添加扑克牌,一共52张
        while (a < 52)
        {

             //随机产生一张扑克牌
             Object poker = list.get(random.nextInt(52));

            //判断新的集合中是否存在随机产生的扑克牌,如果存在则不添加到新的集合中
             if (!newList.contains(poker))
             {
                 newList.add(poker);
             }
             a = newList.size();
        }

        //输出洗完牌后的集合
        System.out.println("\n\n洗完牌后:" + newList.list);
    }
}
class Poker
{

   //花色
    String color;

   // 点数
    String number;

    // 构造方法初始化扑克牌
    public Poker(String color,String number){
         this.color = color;
         this.number = number;
    }

    //重写toString方法,如果不重写则返回的是哈希值
    public String toString(){
         return color + number;
    }

    //重写equals方法,比较花色和点数是否都是一样的,都一样则返回true否则返回false
    public boolean equals(Object obj){
        Poker n = (Poker)obj;
        return this.color.equals(n.color) && this.number.equals(n.number);
    }
}
class StackList
{
    LinkedList list;

    //Stack List的构造方法
    public StackList(){
          list = new LinkedList();
    }

   //StackList的add方法
    public void add(Object m){
          list.offer(m);
    }

   //StackList的poll方法
    public Object poll(){
          return list.poll();
    }

    //StackList的size方法
    public int size(){
          return list.size();
    }

    //Stack List的get方法
    public Object get(int index)
    {
          return list.get(index);
    }

   //StackList的comtains方法
    public boolean contains(Object o){
          return list.contains(o);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值