为什么这不起作用

时间:2012-09-09 19:28:40

标签: java variables double

static final double HotDogcp  = MyConstants.HotDog[0]-(MyConstants.HotDog[0] * MyConstants.mu);
static final double [] HotDog = {18, 8, 10, 0};
static double mu =0.25;

为什么HotDogcp不等于13.5

3 个答案:

答案 0 :(得分:5)

静态变量按声明的顺序初始化。

在您的情况下,初始化muHotDogcp变量仍为0(双精度的默认值),因此HotDogcp初始化为MyConstants.HotDog[0]

如果您在第一行之前声明static double mu =0.25;,那么它可能会按预期执行。

答案 1 :(得分:2)

因为Java不是数学方程求解器。因此,陈述的顺序很重要。

答案 2 :(得分:0)

因为它们尚未初始化。把这个计算放在mu muls下。

将初始化放在构造函数中。外面的声明。