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