Изменить размер массива (например, расширение и изображение) - Java - PullRequest
1 голос
/ 16 октября 2011

Извините, позвольте мне перефразировать вопрос,
Мне нужно выяснить, как переместить каждый элемент массива в новый массив: как для позиции "x", каждый элемент будет перемещен в "x * 2"и "x * 2 + 1": так массив [0] -> массив2 [0], массив2 [1] и массив [1] -> массив2 [2], массив2 [3] и т. д., но для значения "у"также

Для моего 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 голосов
/ 17 октября 2011
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] ]
...