我需要大量的数组,现在我手动创建它们:
int[] row1 = new int[3];
int[] row2 = new int[3];
int[] row3 = new int[3];
我想在数组中创建这些,如下所示:
public final int SIZE = 3;
for (int i = 1;i <= 3;i++)
int[] row[i] = new int[3];
但我不确定如何在循环中生成数组。
我该怎么做?
具体来说,我如何在每次迭代中生成动态标识符?
答案 0 :(得分:13)
具体来说,我如何在每次迭代中生成动态标识符?
你没有。相反,你意识到你实际上有一个数组集合。例如,您可以:
int[][] rows = new int[3][3];
或者:
List<int[]> rows = new ArrayList<>();
for (int i = 0; i < 3; i++) {
rows.add(new int[3]);
}
答案 1 :(得分:2)
数组始终从索引0
开始,因此for (int i = 1;i <= 3;i++)
错误两次。一次用于1
,一次用于不使用SIZE
。你创建了一个多维数组,如
public final int SIZE = 3;
int[][] tables = new int[SIZE][SIZE];
请注意tables
中的每个值都是0
。您可以使用Arrays.fill(int[],int)
为每个元素提供单个值,
Arrays.fill(tables, 1);
// [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
或者,您可以使用一对for
循环,例如
for (int i = 0; i < tables.length; i++) {
for (int j = 0; j < tables[i].length; j++) {
tables[i][j] = (tables[i].length * i) + j;
}
}
// [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
您还可以使用文字作业,并可以使用Arrays.deepToString(Object[])
来显示多维数组,例如
int[][] tables = { { 8, 7, 6 }, { 5, 4, 3 }, { 2, 1, 0 } };
// [[8, 7, 6], [5, 4, 3], [2, 1, 0]]
System.out.println(Arrays.deepToString(tables));
答案 2 :(得分:1)
只需将其设为2D阵列即可。请按以下步骤操作: -
public final int SIZE = 3;
int row[3][SIZE] = new int[3][SIZE];
答案 3 :(得分:1)
这里你将使用一个数组数组,一个二维数组。
public final int SIZE = 3;
int[][] array = new int[SIZE][SIZE];
这样您就不需要动态标识符,只需使用索引即可。您可以访问以下一个元素:
// i is the index of the array, j is the index of the element
int element = array[i][j];
答案 4 :(得分:1)
基于具体询问数组,您可能对更臃肿的类型不感兴趣。但如果这不是问题,你可以使用Map。并将每个数组放入地图中,并使用唯一标识符作为密钥。
Map myRows = new HashMap <String, int[]>();
myRows.put("row1", new int[] {1,2,3});
注意:您可以使用Integer键轻松替换String键。