java - 在java中为数组赋值时遇到问题

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

因此图像数组是从不同方法返回的数组。

我是否忽略了一些非常明显的事情或者什么?我已经为此苦苦挣扎了很长一段时间,所以非常感谢所有的提示、技巧和解释!!

最佳答案

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

相关文章:

javascript - 如何返回该对象数组的总计?

java - Android Studio - 通过 ListView 传递标题和描述

java - Pact 提供者测试的范围应该是什么?

java - Python 到 java 的转换

javascript - 使用下划线对数组中的嵌套对象进行排序

javascript - 如何删除具有由另一个数组的值指定的索引的数组的所有值?

arrays - JavaScript 的数组扩展运算符在 Rust 中的等价物是什么?

java - 迁移到 Google App Engine 上的 Java 8 后,XPathFactory#newInstance() 无法为默认对象模型创建 XPathFactory 错误

java - VariableDeclaratorId 预计在@SuppressWarnings

java - Java 命令行参数中的空格