2011-10-16 68 views
1

不好意思讓我改寫這個問題,
我需要弄清楚如何將數組的每個元素移動到新的數組:像「x」位置的每個元素將移動到「x * 2」和「x * 2 + 1」:所以array [0] - > array2 [0],array2 [1]和array [1] - > array2 [2],array2 [ 3]等,但對於「Y」值也重新大小的數組(如擴大和圖像) - Java

對於我的Java應用程序,我需要輸入

[[1,0,1], 
    [1,0,1], 
    [1,1,1]] 

,並會複製陣列和輸出

功能
[[1,1,0,0,1,1], 
    [1,1,0,0,1,1], 
    [1,1,0,0,1,1], 
    [1,1,0,0,1,1], 
    [1,1,1,1,1,1], 
    [1,1,1,1,1,1]] 

這裏是我可以找出

public short[][] expandArray(short[][] arr) { 
    short[][] newArray = new short[arr.length*2][arr[0].length*2]; 
    for(int s=0; s<arr.length; s++) 
     for(int ss=0; ss<arr[0].length; ss++) { 
     newArray[s*2][(new corresponding row)] = arr[s][ss]; 
     newArray[s*2+1][(new corresponding row)] = arr[s][ss]; 

     newArray[s*2][(next row down)] = arr[s][ss]; 
     newArray[s*2+1][(next row down)] = arr[s][ss]; 
     } 
    return newArray; 
} 

我的目標是在陣列中複製的每個元素向右和向下

EX:
OriginalArray [0] [0]

將被投入

NewArray [0] [0],NewArray [0] [1],NewArray [1] [0],NewArray [1] [1]



感謝

+5

你有什麼這麼遠嗎?你能告訴我們一些代碼嗎?你究竟在哪裏遇到麻煩? – Ishtar

+0

你能提供你試過的代碼嗎?以便我們可以幫助您調試其中的任何問題。 –

+0

有幫助嗎? – theone15247

回答

0
import java.util.Arrays; 

public class Main 
{ 
    public static void main(String args[]) 
    { 
     int[][] array = { {1,0,1}, {1,0,1}, {1,1,1} }; 
     int[][] newArray = replicate(array); 

     int i = 1; 

     System.out.print("[ "); 
     for(int[] a : newArray) 
     { 
      System.out.print(Arrays.toString(a) + (i++ != newArray.length? ", " : "")); 
     } 
     System.out.println(" ]"); 
    } 

    public static int[][] replicate(int[][] array) 
    { 
     int x = array.length; 
     int y = array[0].length; 

     int counterX = 0; 
     int counterY = 0; 

     int[][] newArray = new int[2 * x][2 * y]; 
     for(int[] a : array) 
     { 
      for(int b : a) 
      { 
       newArray[counterX++][counterY] = b; 
       newArray[counterX--][counterY++] = b; 

       newArray[counterX++][counterY] = b; 
       newArray[counterX--][counterY++] = b; 
      } 
      counterY = 0; 
      counterX++; 
      counterX++; 
     } 

     return newArray; 
    } 
} 

輸出:

[ [1, 1, 0, 0, 1, 1], [1, 1, 0, 0, 1, 1], [1, 1, 0, 0, 1, 1], [1, 1, 0, 0, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1] ]