以下是一个完整的Java扑克牌生成程序,可以创建一副标准的52张扑克牌:
java
import java.util.*;
// 扑克牌花色枚举
enum Suit {
HEARTS("♥", "红心"),
DIAMONDS("♦", "方块"),
CLUBS("♣", "梅花"),
SPADES("♠", "黑桃");
private final String symbol;
private final String name;
Suit(String symbol, String name) {
this.symbol = symbol;
this.name = name;
public String getSymbol { return symbol; }
public String getName { return name; }
// 扑克牌级别枚举
enum Rank {
ACE(1, "A"),
TWO(2, "2"),
THREE(3, "3"),
FOUR(4, "4"),
FIVE(5, "5"),
),
SIX(6, "6"),
SEVEN(7, "7"),
),
EIGHT(8, "8"),
NINE(9, "9"),
),
TEN(10, "10"),
JACK(11, "J"),
QUEEN(12, "Q"),
KING(13, "K");
private final int value;
private final String display;
Rank(int value, String display) {
this.value = value;
this.display = display;
public int getValue { return value; }
public String getDisplay { return display; }
// 扑克牌类
class Card {
private final Suit suit;
private final Rank rank;
public Card(Suit suit, Rank rank) {
this.suit = suit;
this.rank = rank;
public Suit getSuit { return suit; }
public Rank getRank { return rank; }
@Override
public String toString {
return suit.getSymbol + rank.getDisplay;
// 获取详细描述
public String getFullName {
return suit.getName + rank.getDisplay;
// 扑克牌组类
class Deck {
private List cards;
public Deck {
initializeDeck;
// 初始化一副标准扑克牌
private void initializeDeck {
cards = new ArrayList;
for (Suit suit : Suit.values) {
for (Rank rank : Rank.values) {
cards.add(new Card(suit, rank));
// 洗牌
public void shuffle {
Collections.shuffle(cards);
// 发牌
public Card dealCard {
if (cards.isEmpty) {
System.out.println("牌已经发完了发完了!");
return null;
return cards.remove(cards.size
// 发多张牌
public List dealCards(int count) {
List dealtCards = new ArrayList;
for (int i = 0; i
dealtCards.add(dealCard);
return dealtCards;
// 获取剩余牌数
public int remainingCards {
return cards.size;
// 显示所有牌
public void displayDeck {
for (Card card : cards) {
System.out.print(card + " ");
System.out.println;
// 主程序演示
public class PokerCardDemo {
public static void main(String[] args) {
// 创建一副新牌
Deck deck = new Deck;
System.out.println("初始牌组:");
deck.displayDeck;
System.out.println;
// 洗牌
deck.shuffle;
System.out.println("洗牌后:");
deck.displayDeck;
System.out.println;
// 发几张牌给玩家
System.out.println("发给玩家的牌:");
List playerHand = deck.dealCards(5);
for (Card card : playerHand) {
System.out.println(card.getFullName);
System.out.println;
// 显示剩余牌数
System.out.println("剩余牌数: " + deck.remainingCards);
System.out.println;
// 再发一张牌并显示详细信息
Card nextCard = deck.dealCard;
if (nextCard != null) {
System.out.println("下一张牌: " + nextCard.getFullName);
程序特点
1. 完整实现:
2. 功能丰富:
3. 输出示例:
初始牌组:
♥A ♥2 ♥3 ♥4 ♥5 ♥6 ♥7 ♥8 ♥9 ♥10 ♥J ♥Q ♥K ♦A ♦2 ♦3 ...
洗牌后:
♠8 ♣Q ♠J ♥6 ♥K ♦9 ♠5 ♣10 ♣2 ♦K ♥3 ♣A ...
发给玩家的牌:
黑桃8
梅花
梅花Q
黑桃J
红龙app红心6
红心K
剩余牌数: 47
下一张牌: 方块9
这个程序展示了面向对象的设计思想,代码结构清晰,易于扩展和维护。