2010-09-23 60 views
0

所以我需要用数组值分割数组值。我正在使用浮点多维数组。用数组值分割数组值

下面是代码:

myNumbers = new float[3, 4]; 
float[] tempNumbers; 

myNumbers[0, 0] = 3; 
myNumbers[0, 1] = -6; 
myNumbers[0, 2] = 3; 
myNumbers[0, 3] = -12; 

/* 
for (int i = 0; i < 4; i++) 
{ 
    myNumbers[0, i] = myNumbers[0, i]/myNumbers[0, 0]; 
} 
*/ 

myNumbers[0, 0] = myNumbers[0, 0]/myNumbers[0, 0]; //Works (strange) 
myNumbers[0, 1] = -6/3; // Works like this 
myNumbers[0, 2] = myNumbers[0, 2]/myNumbers[0, 0]; //Does not 
myNumbers[0, 3] = myNumbers[0, 3]/myNumbers[0, 0]; //Does not 

输出:

1 // Worked 
-2 // Worked 
3 // Not so much 
-12 // Not so much 

奇怪的是我,第一个值时,总是计算。如果我尝试分割静态数字并将它们放入我的数组中,它也可以工作。请帮助我这个。我在这里发布第一次,我希望你可以在这里提问和帮助...... :)

非常感谢,愚蠢的我。 :))

回答

1

不,它非常有意义 - 在第三行和第四行中使用myNumbers[0, 0]时,该值为1(由于第一次计算)。

将数组从图片中取出可能会有所帮助,因为它们在这里无关紧要。您的代码是有效的:

float a = 3; 
float b = -6; 
float c = 3; 
float d = -12; 

a = a/a; 
b = -6/3; 
c = c/a; 
d = d/a; 

第一行后,a显然1.如果你不想更早的计算影响后来者,使用不同的变量:

float a2 = a/a; 
float b2 = -6/3; 
float c2 = c/a; 
float d2 = d/a; 

在这一点上, c2将为1,d2将为-4,这大概是你所期待的。

3

因为您已经更新第一阵列值,它总是1,使用它会改变号码通过myNumbers的值,因此没有进一步分裂[0,2],通过myNumbers [0,3]

+0

哦,是的,我愚蠢。多谢你们 – sed 2010-09-23 13:23:50

0

当执行该行:

myNumbers[0, 0] = myNumbers[0, 0]/myNumbers[0, 0]; //Works (strange) 

结果存储在myNumbers[0,0]。因此,当程序执行第三行:

myNumbers[0, 2] = myNumbers[0, 2]/myNumbers[0, 0]; //Does not

myNumbers[0,0]值是1,并且正确的结果,3被生成。