java中的1D数组到2D数组

时间:2017-04-09 20:32:57

标签: java arrays multidimensional-array

我试图将这个1D数组转换为2D数组,但我无法让它工作。

 public static void main ( String args []  ){
int [] scanned={1,2,3,4,5,6,7,8,9,10,11,12};

int row=4;
int col=3;

int[][] skydata=new int[row][col];

   for(int r=0; r<row; r++){

    for( int c=0; c<col; c++){

        for(int i=0; i<row*col; i++){
            skydata[r][c]=scanned[i];
        }
    }

}


System.out.print(Arrays.deepToString(skydata));

这给出了最后一个元素[[12,12,12] [12,12,12]等等的输出。

我的目标是复制它,以便2d数组输出如下[[1,2,3],[6,5,4] [7,8,9],[12,11,10]

那么我做错了什么?

2 个答案:

答案 0 :(得分:2)

public static void main ( String args []  ){
int [] scanned={1,2,3,4,5,6,7,8,9,10,11,12};

int row=4;
int col=3;

int[][] skydata=new int[row][col];
int i = 0;
   for(int r=0; r<row; r++){

    for( int c=0; c<col; c++){
            skydata[r][c]=scanned[i++];
    }

}


System.out.print(Arrays.deepToString(skydata));

试试这个。 问题在于for for循环:

for( int c=0; c<col; c++){
            skydata[r][c]=scanned[i++];
    }

因为i变量每次都会重新开始。 你可以尝试在纸上写变量,看看我不会大于1,因为你用第二个for循环中的每个新迭代初始化它。

答案 1 :(得分:-1)

    int k = 0;

    for(int r = 0; r<row; r++)
    { 
       if(r % 2 == 0){

        for(int c = 0;  c< col; c++)
        {
           skydata=[r][c]=scanned[k];
           k++;
       }
    }

         else {

                 for (int c=col-1; c>=0 c--)
            {
               skydata[r][c]=scanned[k];
            k++;
        }
    }
}

没关系,我试过这个,结果为我工作