[英]How to use an array in more than one method
我正在嘗試創建多個方法,這些方法都使用來自同一數組的數據。 方法 createDeck 工作正常。 但對於其他兩種方法,它們只返回 null。 有沒有辦法來解決這個問題?
class Deck
{
private static String[] suit = {"Spades", "Diamonds", "Clubs", "Hearts"};
private static String[] rank = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen",
"King", "Ace"};
private static String[] deck = new String[52];
// create deck
static void createDeck()
{
for (int i = 0; i < deck.length; i++)
{
deck[i] = rank[i % 13] + " of " + suit[i / 13];
System.out.println(deck[i]);
}
}
// shuffle deck
static void shuffleDeck()
{
// shuffle the deck
for (int i = 0; i < deck.length; i++)
{
int index = (int) (Math.random() * deck.length);
String temp = deck[i];
deck[i] = deck[index];
deck[index] = temp;
}
// print the shuffled deck
for (String u : deck)
{
System.out.println(u);
}
}
static void findTop()
{
System.out.println(deck[0]);
}
}
解決此問題的一種方法是使用自動調用的靜態初始化程序直接填充數組。
只需在類開頭的數組聲明后添加此代碼塊
private static String[] deck = new String[52];
static {
for (int i = 0; i < deck.length; i++)
{
deck[i] = rank[i % 13] + " of " + suit[i / 13];
System.out.println(deck[i]);
}
}
當然刪除方法createDeck
因為它不再需要。 現在將正確執行以下代碼並打印數組中的值
public static void main(String[] args) {
Deck.findTop();
Deck.shuffleDeck();
}
有關靜態初始化程序的更多信息,請參閱此問題
如果它在您的對象中使用,您可以將Array
放在對象的構造函數中。
public class Deck {
String[] deck;
public Deck(){
this.deck = new String[52];
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.