阵列的水平变换(2D)

时间:2015-01-24 22:12:18

标签: java multidimensional-array transformation

水平和/或垂直翻转图像很简单。前提是给定一个通过导入图片创建的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作为占位符,而循环交换像素,或者更确切地说,这是意图。目前,在提示翻转后窗口什么都不做。有人可以帮助我找到逻辑或语法的问题吗?

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

3 个答案:

答案 0 :(得分:1)

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

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;
    }
}

答案 1 :(得分:0)

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

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;
        }
    }
}

答案 2 :(得分:0)

请在下面查看我的解决方案,

project_id