用Java写一个程序要求如下:从一副纸牌中任意抽取一张,并打印出抽取的是哪一张牌。一副牌有4种花色:黑桃、红桃、方块和梅花。每种花色有13张牌,共有52张牌。
时间: 2024-09-17 11:07:02 浏览: 47
在Java中,你可以创建一个`Card`类来表示纸牌,然后使用数组或列表来模拟整副牌。这里是一个简单的示例:
```java
import java.util.ArrayList;
import java.util.Random;
class Suit {
static final String[] VALUES = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
}
class Card {
private Suit suit;
private int value;
// 构造方法
public Card(Suit suit, int value) {
this.suit = suit;
this.value = value;
}
// 打印卡牌的方法
@Override
public String toString() {
return suit.toString().charAt(0) + value + " of " + suit.toString();
}
}
public class DeckOfCards {
private ArrayList<Card> deck;
public DeckOfCards() {
deck = new ArrayList<>();
for (Suit s : Suit.values()) {
for (int v = 1; v <= 13; v++) {
deck.add(new Card(s, v));
}
}
}
public void shuffleDeck() {
Random random = new Random();
for (int i = deck.size(); i > 0; i--) {
int j = random.nextInt(i);
Card temp = deck.get(i - 1);
deck.set(i - 1, deck.get(j));
deck.set(j, temp);
}
}
public void drawCard() {
if (!deck.isEmpty()) {
System.out.println("Drawn card: " + deck.remove(deck.size() - 1));
} else {
System.out.println("Deck is empty.");
}
}
public static void main(String[] args) {
DeckOfCards deck = new DeckOfCards();
deck.shuffleDeck();
deck.drawCard();
}
}
```
在这个程序中,我们首先定义了`Suit`枚举类型表示四种花色,`Card`类包含花色和点数两个属性。`DeckOfCards`类初始化一副完整的牌,然后实现了洗牌(shuffleDeck)和抽牌(drawCard)功能。
在`main`方法中,我们会先创建一副牌并洗牌,然后随机抽取一张牌并打印出来。
如果你想提问,请告诉我!
阅读全文