翻转多维数组java

我有一个类创建一个具有所需宽度和高度的字符canvas。

在这个我有一个方法drawLetter()(它基本上改变字符,以便在canvas上出现一个字母(就像非常简单的ASCII艺术)

我有3个其他方法rotateClockwise,flipHorizo​​ntal和flipVertical

旋转和flipHorizo​​ntal我做得很好,他们的工作,但我似乎无法解决我垂直翻转arrays的问题(出于兴趣,我认为我有水平和垂直错误的方式回合但是生病了我尝试的样本在下面完成)

这是我无法解决的问题:

这个:

# # # ~ ~ # ~ ~ ~ # ~ ~ ~ ~ ~ ~ 

对此:

 ~ # # # ~ ~ # ~ ~ ~ # ~ ~ ~ ~ ~ 

显然它会像我的其他方法一样在for循环中完成,下面我将发布我已经完成的水平方法和顺时针旋转以certificate它不是功课我不能做

 void mirrorHorizontally() { char[][]horizontalImage = new char[height][width]; for (int i = 0; i < height /2; i++) { for(int j = 0; j < width; j++) { horizontalImage[height - (i+1)][j] = canvasArray[i][j]; horizontalImage[i][j] = canvasArray[height - (i+1)][j]; } } printPicture(horizontalImage); } void rotateClockwise() { char[][] rotatedImage = new char[height][width]; for(int i=0; i= 0; j--) { rotatedImage[i][rotatedImage.length-1-j] = canvasArray[j][i]; } } printPicture(rotatedImage); } 

canvasArray是char [] []类变量中感兴趣的原始图像

这应该适合您的需求:

 public static char[][] mirror(int width, int height, char[][] in) { char[][] out = new char[height][width]; for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { out[i][width - j - 1] = in[i][j]; } } return out; } 

例如:

 char[][] in = new char[][] { new char[] { '#', '#', '#', '~' }, new char[] { '~', '#', '~', '~' }, new char[] { '~', '#', '~', '~' }, new char[] { '~', '~', '~', '~' }, new char[] { '~', '~', '~', '~' } }; for (char[] line : mirror(4, 5, in)) { for (char row : line) { System.out.print(row); } System.out.println(); } 

打印:

 ~### ~~#~ ~~#~ ~~~~ ~~~~