重新调整数组(如扩展和图像) - Java

时间:2011-10-16 19:37:58

标签: java arrays expand image-resizing

对不起让我重新解释一下这个问题,
我需要弄清楚如何将数组的每个元素移动到新数组中:就像每个元素的“x”位置将移动到“x * 2”和“x * 2 + 1”:所以数组[0 ] - > array2 [0],array2 [1]和array [1] - > array2 [2],array2 [3]等但是对于“y”值也是

对于我的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]



感谢

1 个答案:

答案 0 :(得分: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] ]