4D阵列问题

zac*_*ach 1 java arrays string multidimensional-array

有人可以解释为什么我收到此错误

Type mismatch: cannot convert from String to String[][][]
Run Code Online (Sandbox Code Playgroud)

在这段代码?

String [][][][] names = {"zach","zach","zach","zach"};
Run Code Online (Sandbox Code Playgroud)

tem*_*def 5

变量

String[][][][] names
Run Code Online (Sandbox Code Playgroud)

是一个表示四维字符串数组的变量 - 即字符串数组数组的数组.文字

{"zach","zach","zach","zach"};
Run Code Online (Sandbox Code Playgroud)

是一个包含四个元素的单维字符串数组.注意区别 - 四个元素的数组是a String[],而不是a String[][][][].一维数组可以包含任意数量的元素.如果要表示类似2D或3D网格的内容,则向数组添加更多维度非常有用,但这并不是说数组包含更多元素的正确方法.

要解决这个问题,你想写

String[] names = {"zach","zach","zach","zach"};
Run Code Online (Sandbox Code Playgroud)

这确实可以正常工作.

如果你想要一个2D字符串数组,你可以这样做:

String[][] nameGrid = {
                         {"Alice", "Bob", "Charlie"},
                         {"David", "Eliza", "Fred"},
                         {"Gary", "Helen", "Isaac"},
                      };
Run Code Online (Sandbox Code Playgroud)

这里,数据是二维的 - 您选择哪个行作为第一个数组索引,哪个列作为第二个数组索引.请注意每个行和列中的数组元素的数量如何与数组中的维数无关,因为这些是单独的概念.

希望这可以帮助!