2017-04-09 122 views
0

即時嘗試將此一維數組轉換爲二維數組,但我不能得到它的工作。一維數組到二維數組在java中

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

工作是什麼'i' for循環的地步? –

+0

重複http://stackoverflow.com/questions/5134555/how-to-convert-a-1d-array-to-2d-array –

+0

我這樣做遍歷1D數組 – Cosmik11

回答

1
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(int c=0; c<col; c++){ 
      skydata[r][c]=scanned[i++]; 
    } 

我變量將每次從從頭再來。 你可以嘗試在紙上寫變量,看看我沒有變大1,因爲你用第二次循環中的每個新迭代對它進行初始化。

+0

歡迎來到堆棧溢出!儘管您可能已經解決了此用戶的問題,但僅有代碼的答案對於未來出現此問題的用戶來說並不是很有幫助。請編輯您的答案,以解釋爲什麼您的代碼可以解決原始問題。 –

+0

它工作什麼是我的代碼做錯了會關心解釋邏輯? – Cosmik11

+0

說i ++裏面掃描wouldnt,讓你跳過1D數組的第一個元素 – Cosmik11

-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++; 
     } 
    } 
} 

沒關係我嘗試這樣做,它結束了,我