如何以多种方法使用数组

时间:2019-12-19 11:46:41

标签: 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]);
    }

}

1 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是使用自动调用的静态初始化器直接填充数组。

只需在类的开头对数组进行缩放之后,添加此代码块

Widget bottomBar() {
    return Column(
      children: <Widget>[
        const Expanded(
          child: SizedBox(),
        ),
        BottomBarView(
          tabIconsList: tabIconsList,
          addClick: () {},
          changeIndex: (int index) {
            setState(() {
              currentTab = index;
              currentPage = pages[index];
              print(pages[index]);
              print(currentTab);
            });
          },
        ),
      ],
    );
  }

当然,请删除方法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

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