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

标签 java arrays methods

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

相关文章:

java - 当限制设置为 20 时,Facebook Graph API 会响应任何数据

Java EE 6 应用程序客户端登录

objective-c - 在 Objective-C 中打印 C++ 数组 "NSLog"

java - 将项插入到次数按降序排列的多项式中。 (JAVA)

unit-testing - 在 Raku 中进行单元测试时如何模拟类方法

java - Android 使用 ftp api 保存到内存

java - hibernate中的@GenerateValue(strategy = IDENTITY)在部署时不会生成relation(table)

javascript - 比较两个数组与对象并创建具有不匹配对象的新数组

存储在文本文件中的 PHP str_replace 数组

java - OOP:在同一个类中调用公共(public)方法