gpt4 book ai didi

java - 数组的水平变换(2D)

转载 作者:行者123 更新时间:2023-12-01 11:58:52 25 4
gpt4 key购买 nike

水平和/或垂直翻转图像很简单。前提是,给定一个通过导入图片创建的二维整数数组,我必须创建一个带有 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 作为占位符,或者更确切地说,这就是意图。目前,窗口在提示翻转后不执行任何操作。有人可以帮我找到逻辑或语法问题吗?

提前致谢,请指定我应提供的任何详细信息附:我可以确认未引用的提供的代码可以正常运行并经过测试。

最佳答案

发生这种情况是因为您使用的是 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;
}
}

关于java - 数组的水平变换(2D),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28130828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com