实例化FloatBuffer []的异常

时间:2011-10-15 07:22:07

标签: java

我正在尝试创建一个包含144个FloatBuffers的数组,因此我可以使用整数轻松访问每一个以选择哪一个。不,我不是说FloatBuffer 144长。我正在调查使用一个类来包含所有的FloatBuffers,但这需要一些时间。有什么想法吗?

我得到了

java.lang.ArrayIndexOutOfBoundsException: 0

在这一行,无论我用什么方法尝试将新的FloatBuffer实例化到数组中:

    for(int i=0; i<144;i++){
    vbuffers[i] = BufferUtils.createFloatBuffer(buffervolume*7);
    }

我也试过这个并得到了同样的错误:

        vbuffers[i]=FloatBuffer.allocate(buffervolume*7);

以下是完整的相关代码:

public class myclass {

public FloatBuffer[] vbuffers;

public myclass(){
    vbuffers=new FloatBuffer[chunklimit*chunklimit*4];
    for(int i=0; i<144;i++){
    vbuffers[i] = BufferUtils.createFloatBuffer(chunkvolume*7);
    }
}
}

我想补充一点,我最终使用一个大的FloatBuffer和glbuffersubdata来管理我的数据并获得了非常好的结果。

1 个答案:

答案 0 :(得分:2)

该异常强烈暗示vbuffers是零长度数组。检查chunklimit是否为非零。

一般来说,当你有这样的代码时:

vbuffers = new FloatBuffer[chunklimit*chunklimit*4];
for(int i = 0; i < 144; i++) {
    vbuffers[i] = ...

chunklimit*chunklimit*4存在与144不同的风险,从而导致错误。

for循环中使用数组的大小通常是个更好的主意:

vbuffers = new FloatBuffer[chunklimit*chunklimit*4];
for(int i = 0; i < vbuffers.length; i++) {
    vbuffers[i] = ...