【发布时间】:2014-09-25 06:35:12
【问题描述】:
我有一个暑期班的作业。仅供参考,总的来说,我对编程非常陌生,这是我第一次使用 java,这是一个暑期课程,所以它的速度非常快(请友好!)哈哈。
基本上我开始在一个类中编写我的代码,然后我将它分成一个 Card 类和一个 DeckOfCards 类,我现在需要弄清楚如何让它们一起工作。有时我对调用方法有点困惑,尤其是在使用单独的类时。我想我只需要一种方法来分发五张牌,同时告诉牌组中还剩下多少张牌。然后让它们一起正常工作。另外,我需要一个 toString 方法,但老实说我不知道该怎么做。任何帮助是极大的赞赏!如果您也可以帮助解释事情,那就太棒了!我认为我的一切都是正确的,但我可能是错的,我确信有更好的方法来编写代码,我也会接受任何建议以使外观更清晰。仅供参考,我认为教授宁愿数组而不是枚举,因为我们现在正在处理数组。
这里是路线... 设计并实现一个名为 Card 的类,它表示标准扑克牌。每张牌都有花色和面值。然后创建一个名为 DeckOfCards 的类,该类存储 Card 类的 52 个对象。包括洗牌、发牌和报告牌组中剩余牌数的方法。洗牌方法应该假设一个完整的牌组。创建一个驱动程序类 (CardsGame),它的主要方法是从洗好的牌堆中处理五张牌,并在每张牌发出时打印每张牌。确保为这两个类编写适当的构造函数、getter、setter、toString 和其他方法。
主类,CardsGame 类
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 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
}
}
【问题讨论】:
-
那么您需要在 main 中编写代码来确定它是否真的按照您想要的方式正确响应...
-
这段代码写了很多遍,网上肯定有。虽然我建议你先阅读一个关于 Java 类和方法的不错的教程。
-
老兄,如果你不喜欢自己解决这个问题,那就找点你喜欢做的事情吧。我们大多数人都喜欢编码。喘口气,花点时间,玩得开心。
-
这不是不喜欢它的问题,我只是想不通。我实际上只上过 5 节课,而且是暑期班。如果我知道如何解决问题,我就不会在这里发帖了。
标签: java class methods call shuffle