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

Java 如何将多维数组的值正确保存到数组中?,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,下一个代码创建一个名为“arista”的随机多维数组,并用整数填充md数组的每个插槽 然后,它打印出来。您可以看到插槽中是如何填充整数的。 然后我尝试创建一个名为“lista”的数组,它应该是一个包含多维数组中存储的所有值的列表,方法是键入: System.out.printf(Arrays.toString(lista)); 但结果并不是我所期望的。数组“lista”中仅显示“arista”的最后一行,而数组“lista”插槽的其他部分为零 我怎样才能纠正这个问题?怎么了 完整的代码是:

下一个代码创建一个名为“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)); 


}
publicstaticvoidmain(字符串[]args){
int renglones=(int)(Math.random()*5)+5;
int columnas=(int)(Math.random()*5)+5;
int[]arista=新int[renglones][columnas];
int[]lista;
lista=新的int[renglones*columnas];
int k=1;
对于(int i=0;i
您重复使用
j
作为
lista
的索引是不正确的。当
j
0
处重新开始时,它将覆盖第一个
j
条目的内容,只在末尾留下最后一行

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

i
0
变为
1
时,您希望从超过第一个
列的索引号开始,而不是
0
。当
i
1
变为
2
时,需要从索引
2*列开始

    -- 1st row --               -- 2nd row --
[0][1]...[columnas - 1] [columnas][columnas + 1] ... [2*columnas - 1] ...
i
乘以
columnas
,然后添加
j
以获得索引

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

使用调试器并进行检查。重复使用
j
作为
lista
的索引可能是不正确的。想想当
j
i
都改变时,索引应该如何改变。我对这个问题投了否决票,因为没有证据表明对这个代码执行了任何调试。请您的问题向我们展示您的调试发现了什么,以及关于特定代码行的特定问题。请参阅:@Aominè虽然我同意OP需要在调试器中花费一些时间,但所问的问题与调试器无关,因此重复投票是不合适的。其他接近投票的理由是可用的,更适合这个问题。