该程序假定将每个单元格中容纳对象的数组缩放两倍。例如,数组:
[[Object1,Object2],
[Object3,Object4]]
应成为:
[[Object1,Object1,Object2,Object2],
[Object1,Object1,Object2,Object2],
[Object3,Object3,Object4,Object4],
[Object3,Object3,Object4,Object4]]
这是到目前为止我对该程序拥有的代码:
public Color[][] doOperation(Color[][] imageArray)
{
int multiplier = 2;
Color[][] newArray = new Color[imageArray.length*2][imageArray[0].length*2];
for(int i = 0; i < imageArray.length; i++)
for(int j = 0; j < imageArray[0].length; j++)
{
newArray[i][j] = imageArray[i/multiplier][j/multiplier];
}
}
如何更改此代码,以便正确缩放新数组?任何帮助表示赞赏。
答案 0 :(得分:2)
您应该遍历newArray
,而不是imageArray
。
示例:
int[][] oldArray = new int[2][2];
int k = 1;
for(int i = 0; i < oldArray.length; i++)
for(int j = 0; j < oldArray[0].length; j++)
oldArray[i][j] = k++;
int[][] newArray = new int[oldArray.length*2][oldArray[0].length*2];
for(int i = 0; i < newArray.length; i++)
for(int j = 0; j < newArray[0].length; j++)
newArray[i][j] = oldArray[i/2][j/2];
System.out.println(Arrays.deepToString(oldArray));
System.out.println(Arrays.deepToString(newArray));
输出:
[[1, 2], [3, 4]]
[[1, 1, 2, 2], [1, 1, 2, 2], [3, 3, 4, 4], [3, 3, 4, 4]]
答案 1 :(得分:2)
您混合使用了newArray
和imageArray
。您初始化了两倍大小的newArray
(这是正确的),然后使用imageArray
的长度对其进行迭代。只需将imageArray.length
交换为newArray.length
。并且不要忘记return
;)
public static Color[][] doOperation(Color[][] imageArray) {
int multiplier = 2;
Color[][] newArray = new Color[imageArray.length*2][imageArray[0].length*2];
for(int i = 0; i < newArray.length; i++)
for(int j = 0; j < newArray[0].length; j++) {
newArray[i][j] = imageArray[i/multiplier][j/multiplier];
}
return newArray;
}