【发布时间】:2023-01-11 03:30:22
【问题描述】:
我正在创建一个纸牌游戏,需要根据用户输入在 5-10 之间分发多张纸牌。我创建了一个卡片类,现在我在甲板上工作,但感到迷茫,而且无法组织它按升序显示。
到目前为止,这是我的甲板
import java.util.Arrays; import java.util.Collections; public class Deck { private Card card[]; public Deck() { this.card = new Card[52]; for (int i = 0; i < 5; i++) { Card card = new Card(); //Instantiate a Card this.card[i] = card; //Adding card to the Deck } } private void Sort(Card[] deck){ for (int i = 1; i < deck.length; i++){ int nextToInsertRank = deck[i].getRankValue(); Card nextToInsert = deck[i]; int index; index = i - 1; while (index >= 0 && deck[index].getRankValue() > nextToInsertRank){ deck[index + 1] = deck[index]; index--; } deck[index + 1] = nextToInsert; } Collections.shuffle(Arrays.asList(this.card)); } }这是我的卡片课。
导入 java.util.Random; 导入 java.util.Arrays;
公开课卡片{
private final int RANK, SUIT; private static final Random GENERATOR = new Random(); private static final String[] RANKS = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace"}; private static final String[] SUITS = {"Clubs", "Diamonds", "Hearts", "Spades"}; public Card(){ RANK = GENERATOR.nextInt(RANKS.length); SUIT = GENERATOR.nextInt(SUITS.length); } public static void SortCards(Card[] hand) { for(int i = 0; i < 5; i++) { Arrays.sort(RANKS); System.out.println(); } } public String getRank() { return RANKS[RANK]; } public String getSuit(){ return SUITS[SUIT]; } public int getRankValue(){ return RANK; } @Override public String toString(){ return getRank() + " of " + getSuit(); }}
这是我用来打印它的代码。
Card card1 = new Card(); Card card2 = new Card(); Card card3 = new Card(); Card card4 = new Card(); Card card5 = new Card(); System.out.println("A: " + card1); System.out.println("B: " + card2); System.out.println("C: " + card3); System.out.println("D: " + card4); System.out.println("E: " + card5);这是我得到的结果。
答:黑桃 9
B: 梅花 10
C:红心2
D:梅花2
E:黑桃 9
我尝试了几种不同的方法,但似乎无法正确打印。对代码进行任何改进以使其有效工作将不胜感激。
【问题讨论】:
-
您期望的输出是什么?我没有看到 Deck 和 Deck.Sort 的任何用途
-
我需要它按升序打印卡片,但我还不知道该怎么做。
-
你能分享卡类吗?这样我们就可以重现
-
此外,
Sort最后调用Collections.shuffle似乎很奇怪。为什么Sort需要一个参数?它不应该在card成员数组上工作吗?如果没有,你可以static。最后,Deck构造函数创建了一个可以容纳 52 张卡片但只创建了 5 张的数组。 -
我的建议:让
Deck类创建所有 52 张牌并洗牌。然后制作一个Hand类,可以放5张卡片,并对它们进行排序。