首页 > 解决方案 > 将二维数组缩放两倍

问题描述

该程序应该将每个单元格中包含对象的数组缩放两倍。例如,数组:

[[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];
        }
}

我应该如何更改此代码以便正确缩放新数组?任何帮助表示赞赏。

标签: javaarraysscaling

解决方案


您应该遍历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]]

推荐阅读