我正在尝试使用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]);
}
这应该返回“盘子”,但它没有,我一直在查找,修改它和各种各样的现在几个小时,我不能为我的生活搞清楚。这里有人知道吗?
答案 0 :(得分:5)
您正在使用实例初始化程序块,您应该使用静态程序块。
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
关键字的任何块。
另一个选择是使用数组初始化块:
public static String[][] armour =
{{"shirt", "plate", "iron"},{"1", "0.75", "0.5"}};
我有一些评论:
public static
变量正在寻找麻烦。使用private
变量或常量(public static final
)Map
来存储键值对:shirt -> 1
答案 1 :(得分:1)
创建静态初始值设定项:
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";
}
否则,您必须拥有一个类实例才能执行代码块。
更多信息: