如何正确地将多维数组的值保存到数组中?

时间:2017-12-14 22:43:33

标签: java arrays multidimensional-array

下一个代码创建一个名为' arista'的随机多维数组,并用整数填充md-array的每个槽。

然后,它打印出来。你可以看到插槽是如何填充整数的。 然后我尝试创建一个名为' lista'的数组,它应该是一个包含存储在多维数组中的所有值的列表,方法是键入:

System.out.printf(Arrays.toString(lista)); 

但结果并非我的预期。只有#arista的最后一排'出现在数组' lista'以及阵列的其他部分插槽' 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 个答案:

答案 0 :(得分:0)

您重复使用j作为lista的索引是不正确的。当j0重新开始时,它将覆盖第一个j条目的内容,只留下最后一行。

i乘以j也不起作用;当其中任何一个为0时,您将覆盖第一个条目,因为您的计算索引将为0

i0转到1时,您希望从第一个columnas条目之后的索引号开始,而不是0。当i1转到2时,您希望从索引2*columnas开始。

    -- 1st row --               -- 2nd row --
[0][1]...[columnas - 1] [columnas][columnas + 1] ... [2*columnas - 1] ...

i后面加columnas,然后添加j以获取您的索引。

lista[i*columnas + j] = arista[i][j];