我有一个类,可以创建指定宽度和高度的字符画布。在其中,我有一个方法 drawLetter(),它能够将字符更改为字母以显示在画布上(类似简单的ASCII艺术)。
此外,我还有三个方法:rotateClockwise、flipHorizontal和flipVertical。
旋转和水平翻转方法正常工作,但是我无法弄清楚垂直翻转数组出了什么问题(感兴趣的话,我认为我把水平和垂直搞混了,但我会在下面放一个样例)。
这就是我解决不了的问题:
这个:
显然,这将使用for循环完成,就像我的其他方法一样。下面我会发布我已经完成的水平和顺时针旋转的方法,以证明这不是我无法完成的家庭作业。
此外,我还有三个方法:rotateClockwise、flipHorizontal和flipVertical。
旋转和水平翻转方法正常工作,但是我无法弄清楚垂直翻转数组出了什么问题(感兴趣的话,我认为我把水平和垂直搞混了,但我会在下面放一个样例)。
这就是我解决不了的问题:
这个:
# # # ~
~ # ~ ~
~ # ~ ~
~ ~ ~ ~
转换为:
~ # # #
~ ~ # ~
~ ~ # ~
~ ~ ~ ~
显然,这将使用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[][]类变量,其中保存了原始感兴趣的图像。
mirrorHorizontally()
相同,只是高度/宽度的访问模式相反。 但是,你可能想要研究一下使用标准库:Apache 的 ArrayUtils 具有reverse(...)
方法,可用于各个级别的数组。 - Clockwork-Muse