我有一个数组赋值的问题......
我在Global.java中有一个全局浮点数组,声明为......
public static float camObjCoord[] = new float[8000];
然后我用。填充其内容。
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;
System.out.println("cube i = " + Global.i);
}
我这样称呼这个方法......
addcube(-2.0f, 2.0f, -2.0f, 2.0f);
以下是调试打印..
07-13 16:01:16.220: INFO/System.out(4837): highx = -2.0lowx = 2.0highz = - 2.0lowz = 2.0 //This is the values coming in to the class
07-13 16:01:16.220: INFO/System.out(4837): 0.0 //This is the contents of index 0
07-13 16:01:16.220: INFO/System.out(4837): cube i = 1
07-13 16:01:16.220: INFO/System.out(4837): 0.0 //Contents of i 1
07-13 16:01:16.220: INFO/System.out(4837): cube i = 2
07-13 16:01:16.220: INFO/System.out(4837): 0.0 //Contents of i 2
07-13 16:01:16.220: INFO/System.out(4837): cube i = 3
07-13 16:01:16.230: INFO/System.out(4837): 0.0 //Contents of i 3
所以,正如你所看到的......当我分配值时,他们只是......不会被分配给索引..为什么?所有索引都等于0.0
答案 0 :(得分:5)
你有i ++。所以考虑一下这个
Global.cam[i] = highx;
DebugPrint("cube i = " + cam[i]);
i++;
否则,您每次都会引用NEXT。
答案 1 :(得分:1)
这与我以前的答案有关(link to the question;请务必检查第一次修订),因此我对这种混淆负有部分责任。
让我们退一步考虑以下片段:
char[] arr = new char[3];
int index;
index = 0;
arr[index] = 'A';
arr[index+1] = 'B';
arr[index+2] = 'C';
System.out.println(arr); // "ABC"
index = 0;
arr[index++] = '1';
arr[index++] = '2';
arr[index++] = '3';
System.out.println(arr); // "123"
在代码段的第一部分中,index
保持不变,我们会根据需要手动编写index+1
,+2
等。在第二个代码段中,我们只使用index++
。这两种技术在增加索引时将元素分配给数组“工作”,但可以说++
略微“更好”,因为程序员不必手动执行增量。此外,index++
版本允许对语句进行即时重新排序,而显式index+n
版本则需要重新编号。
当然,根据需要做什么,上述任何一种都有更好的替代方案。
在最理想的情况下,您可以使用特殊数组初始值设定语法:
char[] arr = { 'X', 'Y', 'Z' };
System.out.println(arr); // "XYZ"
也许这个片段会有所启发:
char[] arr = { '1', '2', '3' };
int index = 0;
System.out.println(index); // "0"
arr[index++] = 'X';
System.out.println(index); // "1"
System.out.println(arr[index]); // "2"
System.out.println(arr[index-1]); // "X"
System.out.println(arr[0]); // "X"
中间部分是理解问题的关键:在分配后,index
增加了1.这就是为什么arr[index]
是2
,这是旧的值arr[1]
。新值X
已在分配后立即正确分配给arr[0]
,或更一般地arr[index-1]
。
这些问题与增量后算子有关: