gpt4 book ai didi

java - 如何在多个方法中使用数组

转载 作者:行者123 更新时间:2023-12-02 09:11:10 25 4
gpt4 key购买 nike

我正在尝试创建多个方法,这些方法都使用同一数组中的数据。 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();
}

参见this question有关静态初始化程序的更多信息

关于java - 如何在多个方法中使用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59409156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com