无法在java中为数组赋值

时间:2011-11-08 23:39:28

标签: java arrays

我不知道,但由于某种原因阵列拒绝改变,我不明白为什么。见下面的进一步评论

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

因此,图像数组是来自不同方法的返回数组。

我是否忽视了一些非常明显或者什么?我一直在努力解决这个问题,所以所有的提示,技巧和解释都非常感谢!!

2 个答案:

答案 0 :(得分:2)

假设您正按照您打算的方式遍历列和行... 您永远不会将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
}  

答案 1 :(得分:0)

如果rows参数或cols参数小于33,则测试中打印的位置将不会从newimage复制到图像。 while (r < rows && c < cols)测试导致循环在r或c中的第一个达到其最大值时终止。