java - 将二维数组缩放两倍
问题描述
该程序应该将每个单元格中包含对象的数组缩放两倍。例如,数组:
[[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];
}
}
我应该如何更改此代码以便正确缩放新数组?任何帮助表示赞赏。
解决方案
您应该遍历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]]
推荐阅读
- javascript - 从 Express 中的 sid 获取会话
- javascript - Redux Form 不允许编辑 Initialize Form 状态值
- c# - UWP 连接字符串
- java - 如何在启动完成时发送通知?
- c# - C# Smooth Rainbow Fading 问题
- javascript - 如何隔开复选框,列出和删除按钮
- cuda - cudaStreamAddCallback 以后不会阻塞 cudaMemcpyAsync
- node.js - NodeJS req.body 始终为空
- javascript - 如何将数据从 app.component 传递给 ionic 中的子组件或其他组件
- javascript - 如何复制特定的 imdb ID 并将其添加到另一个状态?