2015-06-12 69 views
-3

我不知道为什么需要初始化currentCard那里(我在我的代码中评论)。 这段代码真的需要这个语句吗?我不明白为什么初始化需要在这个代码中的java

public class Card { 
    private String face; 
    private String suit; 

    public Card(String cardFace, String cardSuit) 
    { 
    face = cardFace; 
    suit = cardSuit; 
    } 

    public String toString() 
    { 
    return face + " of " + suit; 
    } 
} 

=========================================== ====================

import java.util.Random; 

public class DeckOfCards 
{ 
    private Card[] deck; 
    private int currentCard; 
    private static final int NUMBER_OF_CARDS = 52; 
    private static final Random randomNumbers = new Random(); 

    public DeckOfCards() 
    { 
    String[] faces = {"Ace", "Deuce", "Three", "Four", 
     "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", 
     "Queen", "King" }; 
    String[] suits = {"Hearts", "Diamonds", "Clubs", "Spades"}; 

    deck = new Card[NUMBER_OF_CARDS]; 
    currentCard = 0; 

    for(int count = 0; count < deck.length; count++) 
     deck[ count ] = 
     new Card(faces[ count % 13 ], suits[ count/13 ]); 
    } 
    public void shuffle() 
    { 
    currentCard = 0; // I do not know why initialization is needed 

    for(int first = 0; first < deck.length; first++) 
    { 
     int second = randomNumbers.nextInt(NUMBER_OF_CARDS); 

     Card temp = deck[ first ]; 
     deck[ first ] = deck[ second ]; 
     deck[ second ] = temp; 
    } 
    } 
    public Card dealCard() 
    { 
    if(currentCard < deck.length) 
     return deck[ currentCard++ ]; 
    else 
     return null; 
    } 
} 


public class DeckOfCardsTest 
{ 
    public static void main(String[] args) 
    { 
    DeckOfCards myDeckOfCards = new DeckOfCards(); 
    myDeckOfCards.shuffle(); 

    for(int i = 1; i <= 52; i++) 
    { 
     System.out.printf("%-19s", myDeckOfCards.dealCard()); 

     if(i % 4 ==0) 
     System.out.println(); 
    } 
    }  
} 
+1

什么初始化? – nafas

+0

currentCard = 0;在洗牌方法 –

+0

@nafas我怀疑问题是关于'currentCard = 0; //我不知道为什么需要初始化。 – Pshemo

回答

1
  • currentCard说应对接下来的这卡(见dealCard()法)

  • shuffle()做了两事情:1)它洗牌,2)重置currentCard,以便下一张要交易的卡是卡片0.

(该currentCard = 0没有必要洗牌本身!)

相关问题