声明多维数组并为其分配值的正确方法是什么?
这就是我所拥有的:
int x = 5; int y = 5; String[][] myStringArray = new String [x][y]; myStringArray[0][x] = "a string"; myStringArray[0][y] = "another string";
尝试将适当的行替换为:
myStringArray[0][x-1] = "a string"; myStringArray[0][y-1] = "another string";
您的代码不正确,因为子数组的长度为y,索引从0开始。因此,设置为myStringArray[0][y]或myStringArray[0][x]将失败,因为索引x和y超出范围。
myStringArray[0][y]
myStringArray[0][x]
x
y
String[][] myStringArray = new String [x][y];是初始化矩形多维数组的正确方法。如果希望将其锯齿状(每个子数组的长度可能不同),则可以使用类似于此答案的代码。但是请注意,如果您想要一个完美的矩形多维数组,John关于必须手动创建子数组的主张是不正确的。
String[][] myStringArray = new String [x][y]
ava没有“true”多维数组。
例如,arr[i][j][k]等效于((arr[i])[j])[k]。换句话说,arr只是一个数组,一个数组,一个数组。
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]]]"