这是 Problem with array assignment 的后续问题
我现在已经像这样完成了 addcube ..当我打印数组时,一切都按预期工作。但是当我在另一个类中打印相同索引的 AFTER 分配时,它告诉我它们等于 0
。所以这些值(value)观不是“节省”的。为什么是这样?我该如何纠正这个问题?
public void addcube(float highx, float lowx, float highz, float lowz){
//Constructing new cube...
System.out.println("f = " + f);
Global.cubes++;
float y = 1.5f;
System.out.println("highx = " + highx + "lowx = " + lowx + "highz = " + highz + "lowz = " + lowz);
//FRONT
Global.camObjCoord[Global.i] = highx;
Global.i++;
System.out.println("cube i = " + Global.i);
}
在这两种情况下,我都像这样打印......
int p = 0;
while(p < 72){
System.out.println(Global.camObjCoord[p]);
p++;
}
Global.i = 0
位于开头。
引用数组的唯一其他位置如下..
cubeBuff = makeFloatBuffer(Global.camObjCoord);
FloatBuffer makeFloatBuffer(float[] arr) {
ByteBuffer bb = ByteBuffer.allocateDirect(arr.length*4);
bb.order(ByteOrder.nativeOrder());
FloatBuffer fb = bb.asFloatBuffer();
fb.put(arr);
fb.position(0);
return fb;
}
我的代码中没有对该数组的进一步引用。
谢谢。
最佳答案
我会严重质疑你的设计。您总是引用该 Global
类,该类显然似乎从任何地方都发生了更改,因此您遇到了此类问题(例如之前的 NullPointerException )。
使用 encapsulation 清楚地尝试不同的事情和 do not just use one global state由不同的类操作。如果类严格只对它们自己的成员进行操作,那么依赖性就会减少,并且更容易跟踪数据的操作位置。
关于java - 全局 float 组值不传递类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3239407/