一尘不染

用Java初始化多维数组

java

声明多维数组并为其分配值的正确方法是什么?

这就是我所拥有的:

int x = 5;
int y = 5;

String[][] myStringArray = new String [x][y];

myStringArray[0][x] = "a string";
myStringArray[0][y] = "another string";

阅读 438

收藏
2020-03-03

共2个答案

一尘不染

尝试将适当的行替换为:

myStringArray[0][x-1] = "a string";
myStringArray[0][y-1] = "another string";

您的代码不正确,因为子数组的长度为y,索引从0开始。因此,设置为myStringArray[0][y]myStringArray[0][x]将失败,因为索引xy超出范围。

String[][] myStringArray = new String [x][y];是初始化矩形多维数组的正确方法。如果希望将其锯齿状(每个子数组的长度可能不同),则可以使用类似于此答案的代码。但是请注意,如果您想要一个完美的矩形多维数组,John关于必须手动创建子数组的主张是不正确的。

2020-03-03
一尘不染

ava没有“true”多维数组。

例如,arr[i][j][k]等效于((arr[i])[j])[k]。换句话说,arr只是一个数组,一个数组,一个数组。

因此,如果您知道数组的工作原理,那么您就会知道多维数组的工作原理!

Declaration:

int[][][] threeDimArr = new int[4][5][6];

or, with initialization:

int[][][] threeDimArr = { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } };

Access:

int x = threeDimArr[1][0][1];

or

int[][] row = threeDimArr[1];

字符串表示形式:

Arrays.deepToString(threeDimArr);

yields

"[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]"
2020-03-03