声明多维数组并为其赋值的正确方法是什么?
这就是我所拥有的:
int x = 5;
int y = 5;
String[][] myStringArray = new String [x][y];
myStringArray[0][x] = "a string";
myStringArray[0][y] = "another string";
发布于 2009-07-01 03:07:45
尝试将适当的行替换为:
myStringArray[0][x-1] = "a string";
myStringArray[0][y-1] = "another string";
您的代码不正确,因为子数组的长度为y
,而索引从0开始。因此,设置为myStringArray[0][y]
或myStringArray[0][x]
将失败,因为索引x
和y
超出界限。
String[][] myStringArray = new String [x][y];
是初始化矩形多维数组的正确方法。如果您希望它是锯齿状的(每个子数组可能具有不同的长度),那么您可以使用类似于this answer的代码。但是请注意,如果您需要一个完全矩形的多维数组,那么John关于您必须手动创建子数组的断言是不正确的。
发布于 2009-07-01 07:26:15
您还可以使用以下结构:
String[][] myStringArray = new String [][] { { "X0", "Y0"},
{ "X1", "Y1"},
{ "X2", "Y2"},
{ "X3", "Y3"},
{ "X4", "Y4"} };
发布于 2009-07-01 03:31:47
您可以像这样声明多维数组:
// 4 x 5 String arrays, all Strings are null
// [0] -> [null,null,null,null,null]
// [1] -> [null,null,null,null,null]
// [2] -> [null,null,null,null,null]
// [3] -> [null,null,null,null,null]
String[][] sa1 = new String[4][5];
for(int i = 0; i < sa1.length; i++) { // sa1.length == 4
for (int j = 0; j < sa1[i].length; j++) { //sa1[i].length == 5
sa1[i][j] = "new String value";
}
}
// 5 x 0 All String arrays are null
// [null]
// [null]
// [null]
// [null]
// [null]
String[][] sa2 = new String[5][];
for(int i = 0; i < sa2.length; i++) {
String[] anon = new String[ /* your number here */];
// or String[] anon = new String[]{"I'm", "a", "new", "array"};
sa2[i] = anon;
}
// [0] -> ["I'm","in","the", "0th", "array"]
// [1] -> ["I'm", "in", "another"]
String[][] sa3 = new String[][]{ {"I'm","in","the", "0th", "array"},{"I'm", "in", "another"}};
https://stackoverflow.com/questions/1067073
复制相似问题