翻转多维数组java
问题描述:
我有一个类,它创建一个具有所需宽度和高度的字符画布。翻转多维数组java
内此我有一个方法drawLetter()(它基本上改变了字符,以便字母时显示在画布上(如非常简单的ASCII技术)
我有其他3种方法rotateClockwise,flipHorizontal和flipVertical
旋转和flipHorizontal我做得很好,他们的工作,但我似乎无法工作出我垂直错过垂直翻转数组(出于兴趣,我认为我有水平和垂直错误的方式,但病倒了一个样本什么即时尝试完成以下)
这是什么我不能工作了:
这样的:
# # # ~
~ # ~ ~
~ # ~ ~
~ ~ ~ ~
这样:
~ # # #
~ ~ # ~
~ ~ # ~
~ ~ ~ ~
显然这将在完成for循环像我其他的方法,下面我会后我有方法做已经为水平和顺时针旋转,以证明其不做作业,我不能做
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< canvasArray.length; i++)
{
for(int j= canvasArray.length-1; j >= 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();
}
打印:
~###
~~#~
~~#~
~~~~
~~~~
什么你的问题是?交换不能正常工作? – 2013-02-21 16:26:05
老实说,我只是不能解决如何构建for循环的值交换 – AngryDuck 2013-02-21 16:27:31
iv使用二维字符[]使用字符串数组等,使其工作,但即时通讯尝试使这个简单的应用程序更好通过使用一个多维数组而不是 – AngryDuck 2013-02-21 16:28:33