java - Java 中的二维数组返回 null 结果

标签 java null multidimensional-array

我正在尝试使用 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/

相关文章:

c - 如何向字符串中添加空字符?

kotlin - 值影响后无法智能转换为 'Boolean'

c++ - 从 C++ 中的函数传递和返回多维数组

c++ - 可变参数模板多维数组容器

java - 尝试一起上课

java - hadoop NoClassDefFoundError 尽管 DistributedCache 设置

java - Java Regex 中的声明差异?

java - 在Java中安排某些任务的最佳方法

c# - 与 SAP 集成

c# - 如何在 C# 中从二维矩形字符数组的一行创建字符串?