对不起让我重新解释一下这个问题,
我需要弄清楚如何将数组的每个元素移动到新数组中:就像每个元素的“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]
感谢
答案 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] ]