我试图将这个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]
那么我做错了什么?
答案 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++;
}
}
}
没关系,我试过这个,结果为我工作