无法从数组中获取正确的值

Unable to get correct values from array

所以当我设置一个数组并打印出值时,它们是正确的。但是当从我的 get array 方法打印出来时,它们是错误的。

public void setArrOfCols(BufferedImage bi){
    for(int i = 0; i < this.arrOfCols.length; i++){
        int value = bi.getRGB(i, 0);
        int red = (value >> 16) & 0xff;
        int green = (value >> 8) & 0xff;
        int blue = value & 0xff;
        int alpha = (value >> 24) & 0xff;
        
        this.arrOfCols[i] = new Pixel(red, green, blue, alpha, i, 0);
    }
    String retStr = "";
    
     for(int i = 0; i < this.arrOfCols.length; i++){
        retStr += this.arrOfCols[i].getRed() + " "
                + this.arrOfCols[i].getGreen() + " "
                + this.arrOfCols[i].getBlue();
        retStr += "\n";
    }
    System.out.println(retStr + " TestSet");
}

public Pixel[] getArrOfCols(){
    String retStr = "";
    
     for(int i = 0; i < this.arrOfCols.length; i++){
        retStr += this.arrOfCols[i].getRed() + " "
                + this.arrOfCols[i].getGreen() + " "
                + this.arrOfCols[i].getBlue();
        retStr += "\n";
    }
    System.out.println(retStr + " testGet");
    
    return this.arrOfCols;
}

是否可能是引用传递问题?两个输出应该相同:

16 43 62
70 73 48
39 61 85
42 65 81
64 75 79
113 106 85
TestSet
103 148 190
103 148 190
103 148 190
103 148 190
103 148 190
103 148 190
testGet

您分享了两个 public 方法,这本身看起来不错。我无法重现与您相同的输出,但我会向您推荐两件事,这可能会为您解决问题。

  1. 将第一个方法重命名为 readImage
  2. 使第二种方法 return 成为数组的副本,其他方法可能会修改它,因此您会遇到一些奇怪的行为。
return Arrays.copyOf(this.arrOfCols, this.arrOfCols.length);

.getRed() 和其他颜色方法从不同的图像获取颜色