我正在尝试使用 Java 中的 2D 数组为文本游戏制作一个装甲系统。我已经在脑子里弄清楚了这一切,但代码似乎不起作用。
public static String[][] armour = new String[2][3];
{
armour[0][0] = "shirt";
armour[0][1] = "plate";
armour[0][2] = "iron";
armour[1][0] = "1";
armour[1][1] = "0.75";
armour[1][2] = "0.5";
}
public static void main(String[] args) {
System.out.println(armour[0][1]);
}
这应该返回“plate”,但它没有,我一直在查找它,修改它以及各种各样的东西几个小时,但我一生都无法弄清楚。这里有人知道吗?
最佳答案
您正在使用实例初始化程序 block ,而您应该使用静态初始化程序 block 。
public static String[][] armour = new String[2][3];
static {
armour[0][0] = "shirt";
armour[0][1] = "plate";
armour[0][2] = "iron";
armour[1][0] = "1";
armour[1][1] = "0.75";
armour[1][2] = "0.5";
}
试试这个就可以了。您没有创建类的实例,任何没有 static
关键字的 block 仅在创建实例时才会运行。
另一个选项是使用数组初始化 block :
public static String[][] armour =
{{"shirt", "plate", "iron"},{"1", "0.75", "0.5"}};
不过我有一些评论:
public static
变量是在自找麻烦。使用私有(private)
变量或常量(public static final
)- 您应该将盔甲信息移至其单独的类或使用
Map
来存储键值对:shirt -> 1
关于java - Java 中的二维数组返回 null 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20072192/