我不明白为什么 java 中的这段代码需要初始化
I do not why initialization is needed in this code in java
我不知道为什么那里需要 currentCard
的初始化(我在我的代码中注释的地方)。
此代码中真的需要该语句吗?
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();
}
}
}
currentCard
说下一张要发的牌(见 dealCard()
方法)
shuffle()
做两件事:1) 洗牌,2) 重置 currentCard
以便下一张要发的牌是牌 0.
(洗牌本身不需要 currentCard = 0
!)
我不知道为什么那里需要 currentCard
的初始化(我在我的代码中注释的地方)。
此代码中真的需要该语句吗?
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();
}
}
}
currentCard
说下一张要发的牌(见dealCard()
方法)shuffle()
做两件事:1) 洗牌,2) 重置currentCard
以便下一张要发的牌是牌 0.
(洗牌本身不需要 currentCard = 0
!)