java如何将多维数组的值正确保存到数组中?
下一个代码创建一个名为“arista”的随机多维数组,并用整数填充md数组的每个插槽
然后,它打印出来。您可以看到插槽中是如何填充整数的。 然后我尝试创建一个名为“lista”的数组,它应该是一个包含多维数组中存储的所有值的列表,方法是键入:
System.out.printf(Arrays.toString(lista));
但结果并不是我所期望的。数组“lista”中仅显示“arista”的最后一行,而数组“lista”插槽的其他部分为零
我怎样才能纠正这个问题?怎么了
完整的代码是:
public static void main(String[] args) {
int renglones = (int) (Math.random() * 5) + 5;
int columnas = (int) (Math.random() * 5) + 5;
int[][] arista = new int[renglones][columnas];
int[] lista;
lista = new int[renglones * columnas];
int k = 1;
for (int i=0; i < renglones; i++ ){
for (int j=0; j < columnas; j++) {
arista[i][j] = k++;
lista[j] = arista[i][j];
}
}
for (int i = 0; i < renglones; i++) {
for (int j = 0; j < columnas; j++) {
System.out.printf("[%d][%d] = %d \n", i, j, arista[i][j]);
}
System.out.println();
}
System.out.printf(Arrays.toString(lista));
}
# 1 楼答案
重新使用
j
作为lista
的索引是不正确的。当j
在0
重新开始时,它将覆盖第一个j
条目的内容,只在末尾留下最后一行用
i
乘以j
也行不通;当其中一个为0
时,您将覆盖第一个条目,因为您计算的索引将为0
当
i
从0
变为1
时,您希望从超过第一个columnas
项的索引号开始,而不是从0
开始。当i
从1
变为2
时,您希望从索引2*columnas
开始用
i
乘以columnas
,然后加j
得到索引