我的夏令课任务。仅供参考,我是一般的编程新手,这是我第一次使用java,它是一个夏季课程,所以它超级快(请好!)大声笑。
基本上我开始在一个类中编写代码,然后将其拆分为Card类和DeckOfCards类,现在我需要弄清楚如何将它们全部一起工作。我有时会对调用方法感到困惑,尤其是当单独的类在运行时。我想我只需要一种方法来处理五张牌,这些牌也可以说出牌组中剩下的牌数。然后让它们正确地协同工作。此外,我需要一个toString方法,但老实说,我不知道如何去做。任何帮助是极大的赞赏!如果你能帮助解释那些太棒了!我觉得我有一切都很正确,但我可能是错的,我确信有更好的方法来编写代码,我也会采取任何建议,以便更清洁。仅供参考,我认为教授会更喜欢数组,因为我们现在正在处理数组。
以下是方向...... 设计并实现一个名为Card的类,代表标准扑克牌。每张卡片都有西装和面值。然后创建一个名为DeckOfCards的类,它存储Card类的52个对象。包括洗牌的方法,交易卡片并报告卡片中留下的卡片数量。洗牌方法应该采用完整的牌组。使用主要方法创建一个驱动程序类(CardsGame),该方法从洗牌的牌组中处理五张牌,在处理时打印每张牌。确保编写适当的构造函数,getter,setter,toString和其他两个类所需的方法。
主要类,CardsGame Class
import java.util.Scanner;
public class CardsGame {
public static void main (String [] args) {
}
}
卡类
class Card {
public static final int SPADE = 4;
public static final int HEART = 3;
public static final int CLUB = 2;
public static final int DIAMOND = 1;
private int rank;
private int suit;
private static final String[] Suit = {"Hearts", "Clubs", "Spades", "Diamonds"};
private static final String[] Rank = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};
private int cardSuit;
private int cardRank;
public Card(int suit, int rank) {
if (rank == 1)
cardRank = 14; // Give Ace the rank 14
else
cardRank = (int) rank;
cardSuit = (int) suit;
}
public int suit() {
return this.cardSuit;
}
public String suitStr() {
return(this.Suit[ this.cardSuit ]);
}
public int rank() {
return this.cardRank;
}
public String rankStr() {
return ( Rank[ cardRank ] );
}
public String toString() {
return ( Rank[ cardRank ] + Suit[ cardSuit ] );
}
}
DeckOfCards Class
class DeckOfCards {
public static final int NEWCARDS = 52;
private Card[] deckOfCards; // Contains all 52 cards
private int currentCard; // deal THIS card in deck
public DeckOfCards( ) {
deckOfCards = new Card[NEWCARDS];
int i = 0;
for ( int suit = Card.DIAMOND; suit <= Card.SPADE; suit++ )
for ( int rank = 1; rank <= 13; rank++ )
deckOfCards[i++] = new Card(suit, rank);
currentCard = 0;
}
//shuffle(n): shuffle the deck
public void shuffle(int n) {
int i, j, k;
for ( k = 0; k < n; k++ ) {
i = (int) ( NEWCARDS * Math.random() ); // Pick 2 random cards
j = (int) ( NEWCARDS * Math.random() ); // in the deck?
//swap these randomly picked cards
Card temp = deckOfCards[i];
deckOfCards[i] = deckOfCards[j];
deckOfCards[j] = temp;
}
currentCard = 0; // Reset current card to deal
}
}
答案 0 :(得分:0)
要实例化卡片组,请使用以下代码DeckOfCards deck = new DeckOfCards();
要调用DeckOfCards类中的方法,首先需要实例化DeckOfCards类型的对象(我们刚才这样做)。然后,您只需引用实例化的变量名称(deck),输入。,并调用方法的名称。
public class CardsGame {
public static void main (String [] args) {
DeckOfCards deck = new DeckOfCards();
//call shuffle
deck.shuffle();
}
}
目前,我不相信您在DeckOfCards中编写的方法是可访问的。函数shuffle()应该放在构造函数的外部。如果您想在构造函数中调用它,只需调用shuffle();
以下是DeckOfCards的一个示例toString方法
(注意这应该放在构造函数之后)
@Override public String toString() {
return "DeckOfCards";
}