Java,卡片组,卡片类,需要让它们一起工作

时间:2014-08-02 01:11:15

标签: java class methods call shuffle

我的夏令课任务。仅供参考,我是一般的编程新手,这是我第一次使用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
  }
}

1 个答案:

答案 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类结构

目前,我不相信您在DeckOfCards中编写的方法是可访问的。函数shuffle()应该放在构造函数的外部。如果您想在构造函数中调用它,只需调用shuffle();

即可

的toString

以下是DeckOfCards的一个示例toString方法

(注意这应该放在构造函数之后)

@Override public String toString() {
  return "DeckOfCards";
}