我不知道,但由于某种原因,数组拒绝更改,我不知道为什么。请参阅下面的更多评论
public static void contour (int[ ][ ][]image, int rows, int cols, int maxIntensity, int[ ][ ][]newImage) throws Exception
{
PrintWriter contour = new PrintWriter("contour.ppm");
int r = 0;
int c = 0;
int a = 0;
int sumk = 0;
while (r < rows && c < cols)
{
while (a < 3)
{
image[0][r][a] = newImage[0][r][a];
image[cols-1][r][a] = newImage[cols-1][r][a];
image[c][0][a] = newImage[c][0][a];
image[c][rows-1][a] = newImage[c][rows-1][a];
a++;
}
r++;
c++;
}
System.out.println (image[32][0][2]);
System.out.println (newImage[32][0][2]);
}
这段代码有点断章取义,但您应该能够看到我想要在两个数组中使哪些值相同。打印语句用于测试目的,由于某种原因我得到两个不同的值。这些数组都分配有值,但图像数组不会更改(即使我用此方法创建新数组,同样的问题仍然存在)。
你可以看到我在main方法中定义了这些数组,它们如下:
int image [][][] = readimage (fname, descriptor);
int newImage [][][] = new int [rows][cols][3];
因此图像数组是从不同方法返回的数组。
我是否忽略了一些非常明显的事情或者什么?我已经为此苦苦挣扎了很长一段时间,所以非常感谢所有的提示、技巧和解释!!
最佳答案
假设您正在按照您想要的方式遍历列和行...
您永远不会将 a
变量重置为 0
,因此您的代码只能运行一次。
int r = 0;
int c = 0;
int a = 0;
int sumk = 0;
while (r < rows && c < cols)
{
while (a < 3)
{
image[0][r][a] = newImage[0][r][a];
image[cols-1][r][a] = newImage[cols-1][r][a];
image[c][0][a] = newImage[c][0][a];
image[c][rows-1][a] = newImage[c][rows-1][a];
a++;
}
r++;
c++;
a=0; //<----ADD THIS
}
关于java - 在java中为数组赋值时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8058567/