我有一个2D阵列,我想顺时针翻转(不,这不是一个家庭作业!)。我有以下输出,因为我的代码试图通过创建一个新的临时数据来翻转数组。
// Original array
I/System.out: 10 11 12 13 14
I/System.out: 15 16 17 18 19
// Temp array
I/System.out: 10 15
I/System.out: 11 16
I/System.out: 12 17
I/System.out: 13 18
I/System.out: 14 19
我想要的是第二个数组(15 - 19)在第一列。我只是不明白我做错了什么。
代码如下:
Object[][][] containerTemp = new Object[zDim][yDim][xDim];
for (int z = 0; z < zDim; z++) {
for (int y = yDim - 1; y >= 0; y--) {
for (int x = 0; x < xDim; x++) {
containerTemp[z][y][x] = container[z][x][y];
}
}
}
Temp数组的最终结果对于项目来说是正确的,但我还有其他代码可以完成这一部分,我只是希望这些嵌套for循环“翻转”数组而不移动值。
试试:
Object[][][] containerTemp = new Object[zDim][yDim][xDim];
for (int z = 0; z < zDim; z++) {
for (int y = yDim - 1; y >= 0; y--) {
for (int x = 0; x < xDim; x++) {
containerTemp[z][y][xDim - (x + 1)] = container[z][x][y]; // change x target.
}
}
}