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

  • 本文关键字:获取 数组 java
  • 更新时间 :
  • 英文 :


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

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

您共享了两个公共方法,这本身看起来很好。我无法复制与您相同的输出,但我建议您做两件事,这可能会为您解决问题。

  1. 将第一个方法重命名为readImage
  2. 让第二个方法返回数组的副本,其他方法可能会对它进行修补,因此你会遇到一些奇怪的行为。
return Arrays.copyOf(this.arrOfCols, this.arrOfCols.length);

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

最新更新