gpt4 book ai didi

Java数组重写所有索引

转载 作者:行者123 更新时间:2023-12-01 15:44:12 25 4
gpt4 key购买 nike

首先,我的问题与那里描述的几乎相同:Array returning same values for all indexes但它适用于 Java 而不是 C#。 (不过我听说很相似)

这里有一些类(class)正在发挥作用,我将尽力给出最详细的信息:

SomeInterface:不同类型像素的接口(interface)。

PixelTypeA:一种类型的像素。

PixelTypeB:另一种类型的像素。

(PixelTypeA和PixelTypeB实现/继承自SomeInterface)

PixelImage:这是有问题的类,它包含二维数组,其中所有方 block 的值都相同,声明如下:

SomeInterface[][] pixels;

现在,构造函数执行以下操作来分配内存(高度和宽度是参数):

pixels = new SomeInterface[height][width];

到目前为止一切顺利。但随后,调用 PixelImage 中的方法从 PPM 文件加载像素。该代码可以正常工作,因为如果我在将像素保存到内存中(在 readfile 循环中)后立即测试像素的值,那就没问题。但是,我意识到在每次循环迭代之后(即在内存中保存每个像素之后),像素数组的所有值都具有相同的值,即最后保存的像素的值。这是循环中的重要代码:

pixels[row][col] = new PixelTypeA( pixelValue );

正如我所说,如果我在下一行执行像素[行][列]的系统打印,则它具有正确的值,尽管像素二维数组中的每个其他索引也具有该值。 row 和 col 正确递增。我对 Java 很陌生,我的假设是我错过了一些有关引用或类似内容的内容,这导致我在 readfile 循环的每次迭代中意外更新所有像素数组(或者可能是声明/初始化是问题所在吗?)。我尝试自己解决这个问题几个小时,但这变得非常令人沮丧。我更改了名称,无法为您提供完整的代码,因为这是一项作业,我想自己完成,我只需要线索来了解现在可能导致这种奇怪行为的原因。

谢谢!

最佳答案

您很可能会重复使用在数组中插入的对象,而不是每次都执行new

这意味着每个数组条目都指向同一对象,该对象被设置为最新读取的值。

关于Java数组重写所有索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7453931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com