gpt4 book ai didi

java - 使用“覆盖值”创建 FloatBuffer 数组?

转载 作者:太空宇宙 更新时间:2023-11-04 07:44:20 25 4
gpt4 key购买 nike

我正在使用这样的 for 循环创建一个 FloatBuffers 数组:

FloatBuffer[] buffer = new FloatBuffer[sizebuffer];

float[] farray = new float[sizeArray];

for(int i=0;i<sizebuffer;i++){
for(int j=0;j<sizeArray;j++){

farray[j]= I get the float values from other buffer....
}

buffer[i]= FloatBuffer.wrap(farray); (*)

}

但由于某种原因,每次执行此行 (*) 时,它都会更改 FloatBuffer 数组(“缓冲区”)每一行的值。例如,在给定 buffer[0] 的值后,我打印了 buffer[0].get(0),然后在给定 buffer[1] 的值后,我再次打印了 buffer[0].get(0),但值已更改。它正在处理每个先前的 buffer[0]、buffer[1]... 上每个新 buffer[i] 的值。我不明白为什么会发生这种情况?

最佳答案

FloatBuffer.wrap方法有效地保留传递给它的数组。因此,您的所有缓冲区最终都将以您在 for 循环中最后处理的任何值结束。避免此问题的一个简单但相对昂贵的方法是 System.arraycopy在将数组包装到每个缓冲区之前。

说实话,您应该只使用 put 之一当您从外部源读取浮点值时,将这些方法设置到缓冲区中的方法系列。

for(int i=0;i<sizebuffer;i++){
for(int j=0;j<sizeArray;j++){
farray[j]= some value from other buffer....
}

buffer[i]= FloatBuffer.allocate(farray.length);
buffer[i].put(farray);
}

关于java - 使用“覆盖值”创建 FloatBuffer 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15555557/

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