2015-11-14 65 views
1

我需要一個給定輸入二維數組{{1,2},{3,4}}和(int)row = 2的方法; (int)列= 3,將產生級聯的二維數組{{1,2,1,2,1,2} {3,4,3,4,3,4}}。2D Array Concatenation

我的嘗試是使用嵌套for循環來水平和垂直擴展它們,但不成功。這是我到目前爲止有:

int row = 2; 
    int column = 5; 
    int count = 0; 
    int[][] list = {{12,3},{3,4}}; 

    int [][] renewed = new int[row*list.length][column*list[0].length]; 

    for (int l = 0; l<list.length; l++) { 
     for (int k = 0; k<renewed.length; k+= list.length) { 
      renewed[l+k] = list[l]; 
     } 
    }   

    System.out.println(Arrays.deepToString(renewed));  
    } 
} 

^這就產生名單[] []放大縱,第一列

int row = 2; 
    int column = 4; 
    int[][] list = {{12,3},{3,4}}; 

    int [][] renewed = new int[row*list.length][column*list[0].length]; 
    for (int i = 0; i<list[0].length; i++) { 
     for (int j = 0; j<renewed[0].length; j+=list[0].length) { 
      renewed[0][j+i] = list[0][i]; 
     } 
    } 

    System.out.println(Arrays.toString(renewed[0]));  
} 

^這就產生名單[] []擴建水平,爲第一排;

那麼我怎樣才能連接這兩種方法,以產生一種方法,擴大水平和垂直兩個

+0

輸入3將如何生成大小爲5的數組? –

+0

我只是測試了不同的值。您可以忽略我使用的特定值,因爲我正在尋找一個通用答案,而不是針對此特定數組定製的一個答案。 –

+0

但這並沒有幫助實際解決問題。你想如何精確修改原始數組? –

回答

2

我認爲最簡單的方法是迭代新數組中的每個位置,並使用餘數運算符%來獲取原始的正確條目。

int[][] list = {{1,2},{3,4}}; 
int row = 2; 
int column = 5; 
int [][] renewed = new int[row*list.length][column*list[0].length]; 
for (int i = 0; i < renewed.length; i++) { 
    for (int j = 0; j < renewed[0].length; j++) { 
     renewed[i][j] = list[i % list.length][j % list[0].length]; 
    } 
} 
System.out.println(Arrays.deepToString(renewed)); 
+0

你是男人!謝謝。 –

+0

@mathlover沒問題。很高興我能幫上忙。 –