用Java写一个程序要求:从一副纸牌中任意抽取一张,并打印出抽取的是哪一张牌。一副牌有4种花色:黑桃、红桃、方块和梅花。每种花色有13张牌,共有52张牌。
时间: 2024-09-17 11:06:41 浏览: 48
为了完成这个任务,我们可以首先创建一个`Card`类,表示扑克牌,然后定义一个`Deck`类来管理整副牌。以下是一个简单的Java程序实现:
```java
import java.util.Random;
// 定义扑克牌类
class Card {
enum Suit { BLACK_PEARLS, RED_HEARTS, SPADES, DIAMONDS };
enum Rank { ACE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING };
Suit suit;
Rank rank;
public Card(Suit suit, Rank rank) {
this.suit = suit;
this.rank = rank;
}
@Override
public String toString() {
return rank.name() + " of " + suit.name().substring(0, 1).toUpperCase() + suit.name().substring(1);
}
}
// 创建牌堆类
class Deck {
private Card[] cards;
public Deck() {
cards = createFullDeck();
}
private Card[] createFullDeck() {
Card[] deck = new Card[52];
for (Suit suit : Suit.values()) {
for (Rank rank : Rank.values()) {
deck[rank.ordinal() * 4 + suit.ordinal()] = new Card(suit, rank);
}
}
return deck;
}
public Card drawCard() {
Random random = new Random();
return cards[random.nextInt(cards.length)];
}
}
public class Main {
public static void main(String[] args) {
Deck deck = new Deck();
System.out.println("Drawing a card from the deck...");
Card drawnCard = deck.drawCard();
System.out.println("The drawn card is: " + drawnCard);
}
}
```
在这个程序中,我们首先定义了两个枚举类型`Suit`和`Rank`分别代表花色和牌面数字。接着,`Card`类包含了这两个属性以及构造方法和重写的`toString()`方法用于打印卡片信息。
`Deck`类负责初始化整副牌并提供了抽牌的方法`drawCard()`。在`main`方法中,我们创建了一个`Deck`实例,抽取了一张牌并将其打印出来。
阅读全文