JAVA案例,生成一副扑克牌并洗牌,在打印每张牌的点数和花色

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

//扑克牌类
class Card {

    //扑克牌点数
    public static enum Face
    {
        ACE,Deuce,Three,Four,Five,Six,Seven,Eight,Nine,Ten,Jack,Queen,King
    };

    //扑克牌花色
    public static enum Suit{Clubs,Diamonds,Hearts,Spades};

    private final Face face;
    private final Suit suit;

    public Card(Face face,Suit suit)
    {
        this.face=face;
        this.suit=suit;
    }

    public Face getFace() {
        return face;
    }

    public Suit getSuit() {
        return suit;
    }

    public String getCard()
    {
        return String.format("%s,%s",face,suit);
    }
}

//牌桌类
class DeckOfCard
{
    private List<Card> list;
    //初始化牌桌,并进行洗牌
    public DeckOfCard()
    {
        Card[] deck=new Card[52];
        int count=0;
        //用Card对象填充牌桌
        for (Card.Suit suit:Card.Suit.values()) {
            for ( Card.Face face:Card.Face.values() )   {
                deck[count++] =new Card(face, suit);
            }
        }
        list = Arrays.asList(deck);   //将数组转换成list
        Collections.shuffle(list);  //洗牌
    }

    public void printcards()
    {
        //按4列显示52张牌
        for ( int i=0;  i<list.size();  i++ )
            //格式化输出
            System.out.printf( "%-19s%s",  list.get(i).getCard(),
                    ((i+1)%4==0)?"\n":"" );
    }
}

//公共类(发牌者)
public class Dealer
{
    public static void main(String[] args) {
        DeckOfCard deckOfCard=new DeckOfCard();
        deckOfCard.printcards();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值