在JAVA中将1d数组转换为2d数组

时间:2015-05-29 20:58:31

标签: java arrays

我正在尝试将1d数组中的值输入到java中的2d数组中。

这是我到目前为止所做的:

int[] input2 = {
    0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0
};
int[][] arr = new arr[3][4];

for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        System.out.println("index" + ((i * arr.length) + j));
        arr[i][j] = input2[(i * arr.length) + j];
        //System.out.print("  " + arr[i][j]);

    }
    //System.out.println();
 }

但它输出的是:

index0
index1
index2
index3
index3
index4
index5
index6
index6
index7
index8
index9

这意味着我从1d数组中获取索引错误。 我哪里出错了?

6 个答案:

答案 0 :(得分:2)

您的错误在于,您在每一步中乘以的数量而不是列的数量

如果要转到第二行的第一个元素,则必须先跳过第一行的所有元素。那将是1 * arr[0].length。因此,您的方法可以在X x X数组中工作,但不能在X x Y数组中工作。

答案 1 :(得分:0)

它可以填充2个维度,但((i * arr.length)+ j)可能只是添加值。我会在其中间添加“+”,“'以查看实际输出的内容。

答案 2 :(得分:0)

在你的循环中试试这个 -

((i*arr[0].length) + j) 

答案 3 :(得分:0)

您应该从以下位置更改索引公式:

(i*arr.length) + j

(i*arr[i].length) + j

答案 4 :(得分:0)

你可以试试这个:

    int count = 0;
    for(int i=0; i< arr.length; i++)
     {
         for(int j=0; j<arr[i].length; j++)
         {
             //System.out.println("index" + ((i*arr.length) + j) );
             arr[i][j] = input2[count++];
             System.out.print("  " + arr[i][j]);

         }
    System.out.println();
     }

答案 5 :(得分:0)

尝试

int[] input2 = {0,1,0,0,0,1,1,0,1,0,1,0};
 int[][] arr = new arr[3][4];

for(int i=0; i< arr.length; i++)
         {
             for(int j=0; j<arr[i].length; j++)
             {
                 System.out.println("index" + ((i*arr[i].length) + j) );
                 arr[i][j] = input2[(i*(arr[i].length)) + j];
                 //System.out.print("  " + arr[i][j]);

             }
        //System.out.println();
         }

(用((i*arr.length) + j)替换((i*arr[i].length) + j)