基于现有Card类完善Deck类生成扑克牌栈并实现格式化输出的方法
扑克牌Deck类实现指导
1. 修正数组对应关系
你现有代码里的rank数组和pointValue数组顺序不匹配:rank第一个元素是「Two(2)」,对应的点数应该是2,但你现在pointValue第一个元素是1,属于Ace的点数,先调整对应关系:
// 调整后三个数组同下标的值一一对应*这里要注意下标必须匹配,否则牌面和点数会对应错误* String rank[] = {"Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King", "Ace"}; int pointValue[] = {2,3,4,5,6,7,8,9,10,11,12,13,1};
2. 补全Deck类核心逻辑
你需要在Deck类里补充构造方法初始化整副牌,还可以按需增加洗牌、抽牌、打印牌堆的常用功能,完整实现代码如下:
import java.util.Random; public class Deck { // 四类花色 String suit[] = {"Hearts", "Clubs", "Diamonds", "Spades"}; // 牌面,和下方点数数组下标一一对应 String rank[] = {"Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King", "Ace"}; int pointValue[] = {2,3,4,5,6,7,8,9,10,11,12,13,1}; Card[] deck = new Card[52]; // 记录当前抽牌位置,抽牌功能用 private int currentCardIndex = 0; // 构造方法:初始化生成整副52张牌 public Deck() { int index = 0; // 外层遍历所有花色 for (int i = 0; i < suit.length; i++) { // 内层遍历所有牌面 for (int j = 0; j < rank.length; j++) { // 生成对应Card对象存入牌堆数组 deck[index] = new Card(suit[i], rank[j], pointValue[j]); index++; } } } // 洗牌方法:打乱牌堆顺序 public void shuffle() { currentCardIndex = 0; Random random = new Random(); for (int i = 0; i < deck.length; i++) { // 随机交换两个位置的牌 int randomIndex = random.nextInt(52); Card temp = deck[i]; deck[i] = deck[randomIndex]; deck[randomIndex] = temp; } } // 抽牌方法:抽取牌堆最上方一张牌 public Card dealCard() { if (currentCardIndex < deck.length) { return deck[currentCardIndex++]; } return null; } // 打印整副牌,输出格式和需求完全匹配 public void printAllCards() { for (Card card : deck) { System.out.println(card.getRank() + " of " + card.getSuit() + " (value = " + card.getPointValue() + ")"); } } // 测试主方法 public static void main(String[] args) { Deck myDeck = new Deck(); // 如需打乱牌序就取消下方注释 // myDeck.shuffle(); // 打印所有牌 myDeck.printAllCards(); } }
3. 效果说明
运行上述代码的main方法就能输出要求格式的内容,示例输出如下:
Six of Hearts (value = 6) Ace of Clubs (value = 1) ...其余49张牌依次输出
如果不想单独写打印逻辑,也可以直接修改Card类的toString方法,把里面的(point value = 改成(value = ,后续直接打印Card对象就能得到符合要求的输出。
内容的提问来源于stack exchange,提问作者Conor
相关产品推荐
相关产品推荐

