arrays的水平变换(2D)

水平和/或垂直翻转图像很简单。 前提是给定一个通过导入图片创建的2D整数数组,我必须创建一个带有int [] []参数的方法,并在返回void之前将其水平翻转。

语法如下:

public static void horizontalFlip(int[][] imgArray) { int temp; for (int i = 0; i < imgArray.length; i++) { for (int j = 0; j < imgArray[i].length / 2; j++) { temp = imgArray[i][j]; imgArray[i][j] = imgArray[imgArray.length - 1 - i][j]; imgArray[imgArray.length - 1 - i][j] = temp; } } } 

我使用imgArray作为数组参数,并使用temp作为占位符,而循环交换像素,或者更确切地说,这是意图。 目前,在提示翻转后窗口什么都不做。 有人可以帮我找到逻辑或语法的问题吗?

在此先感谢,请说明我应提供的任何细节PS我可以确认未提供的提供的代码是否正常运行并经过测试。

它正在发生,因为你使用的是i而不是j 。 但i不会在中途停止,但它会继续并重新交换arrays。
这是一个正确的代码:

 for (int i = 0; i < imgArray.length; i++) { for (int j = 0; j < imgArray[i].length / 2; j++) { temp = imgArray[i][j]; imgArray[i][j] = imgArray[i][imgArray.length - 1 - j]; imgArray[i][imgArray.length - 1 -j] = temp; } } 

或者,如果要交换列,而不是行:

 for (int i = 0; i < imgArray.length / 2; i++) { for (int j = 0; j < imgArray[i].length; j++) { temp = imgArray[i][j]; imgArray[i][j] = imgArray[imgArray.length - 1 - i][j]; imgArray[imgArray.length - 1 -i][j] = temp; } } 

这将正确地水平翻转图像:

 public static void horizontalFlip(int[][] imgArray) { int temp; for (int i = 0; i < imgArray.length; i++) { for (int j = 0; j < imgArray[i].length/2; j++) { temp = imgArray[i][j]; imgArray[i][j] = imgArray[i][imgArray[i].length - 1 - j]; imgArray[i][imgArray[i].length - 1 - j] = temp; } } }