java练习题:打印扑克牌、洗牌、发牌、交换牌、判断是否有牌

public class PokeCard { int val; String color; public PokeCard(int val,String color){ this.val=val; this.color=color; } @Override public String toString() { ...
摘要由CSDN通过智能技术生成
public class PokeCard {
    int val;
    String color;
    public PokeCard(int val,String color){
        this.val=val;
        this.color=color;
    }

    @Override
    public String toString() {
        //打印数字和颜色
        return String.format("[%d,%s]",val,color);
    }

    @Override
    public boolean equals(Object obj) {
        if(obj==null){
            return false;
        }
        //返回obj对象能否被PokeCard类型引用指向
        //obj对象的类型是不是PokeCard类型的小类型
        if(!(obj instanceof PokeCard)){
            return false;
        }
        //强制转换
        PokeCard other=(PokeCard)obj;
        //这里调用的是String类型的equals的(this.color是String类型的),已经实现好了
        return this.val==other.val
                &&this.color.equals(other.color);
    }
}

import java.util.ArrayList;
import java.util.Random;

public class Main {
   private static void swap(ArrayList<PokeCard> list,int i,int j){
        PokeCard tmpI=list.get(i);
        PokeCard tmpJ=list.get(j);
        //交换i.j坐标的值
        list.set(i,tmpJ);
       list.set(j,tmpI);
    }

    public static void main(String[] args){
        ArrayList<PokeCard> cards=new ArrayList<>(52);
        String[] colors={"♥","♦","♠","♣"};
        //按顺序打印正副牌
        //花色循环
        for(int i=0;i<4;i++){
            //数字循环
            for(int j=1;j<14;j++){
                PokeCard card=new PokeCard(j,colors[i]);
                //循环按顺序尾插每一张牌
                cards.add(card);
            }
        }
        System.out.println(cards);

        //洗牌
        Random random=new Random(20190820);
        for (int i=51;i>0;i--){
            //在0到i之前数字中随机抽取一个数字赋给j
            int j=random.nextInt(i);
            //调用swap方法交换i,J
            swap(cards,i,j);
        }
        System.out.println(cards);

        //有三个人每人抓5张牌
        ArrayList<PokeCard> A=new ArrayList<>();
        ArrayList<PokeCard> B=new ArrayList<>();
        ArrayList<PokeCard> C=new ArrayList<>();
        //打印15张牌
        System.out.println(cards.subList(52-15,52));
        for(int i=0;i<15;i++){
            //尾删
            PokeCard card=cards.remove(cards.size()-1);
            //发牌,余1发给A,余2发给B,余3发给C
            switch (i%3){
                case 0:
                    A.add(card);
                    break;
                case 1:
                    B.add(card);
                    break;
                case 2:
                    C.add(card);
                    break;
            }
        }
        System.out.println(cards.size());
        System.out.println(A);
        System.out.println(B);
        System.out.println(C);

        //A抓到手里的牌中,有没有♠6
        PokeCard heartA=new PokeCard(6,"♠");
        //自写代码判断是否包含
        for(PokeCard card:A){
            //如何判断card是不是♠6
            //自定义类如何判断两个对象相等
            if(card.equals(heartA)){
                System.out.println("包含");
            }
        }
        //用系统自带的方法判断
        if(A.contains(heartA)){
            System.out.println("包含");
        }else {
            System.out.println("不包含");
        }





    }
}

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值