title: Java, deck of cards, card class, need to get it all working together
body: <p>I have an assignment for my summer class.  FYI, I'm super new to programming in general and this is my first time with java and it's a summer class so it's going super fast (please be nice!) lol.</p>
  
  <p>Basically I started writing my code in one class, then I split it up into a Card class and a DeckOfCards class and I now need to figure out how to get it all to work together.  I get a little confused with calling methods sometimes, especially when separate classes are in play.  I think I just need a method to deal out five cards that also tells how many cards are left in the deck.  Then get it all working together correctly.  Also, I need a toString method but I honestly do not know how to go about that.  Any help is greatly appreciated!  If you could help explain things too that would be awesome!  I think I have everything SO FAR correct but I could be wrong and I'm sure there are better ways to write the code, I'll take any suggestions for a cleaner look too.  FYI, I think the prof would rather arrays then enums since we're dealing with arrays right now.  </p>
  
  <p>Here are the directions...
  Design and implement a class called Card that represents a standard playing card. Each card has a suit and a face value. Then create a class called DeckOfCards that stores 52 objects of the Card class. Include methods to shuffle the deck, deal a card and report the number of cards left in the deck. The shuffle methods should assume a full deck. Create a driver class (CardsGame) with a main method that deals five cards from the shuffled deck, printing each card as it is dealt. Make sure to write the appropriate constructors, getters, setters, toString and other methods as required for both classes.</p>
  
  <p>The main class, CardsGame Class</p>
  
  <pre><code>import java.util.Scanner;
  
  public class CardsGame {
      public static void main (String [] args) {  
  
     }
  }    
  </code></pre>
  
  <p>Card Class</p>
  
  <pre><code>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 ] );
     }
  }
  </code></pre>
  
  <p>DeckOfCards Class</p>
  
  <pre><code>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 &lt;= Card.SPADE; suit++ )
       for ( int rank = 1; rank &lt;= 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 &lt; 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
    }
  }
  </code></pre>