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
答案 0 :(得分:5)
静态变量按声明的顺序初始化。
在您的情况下,初始化mu
时HotDogcp
变量仍为0(双精度的默认值),因此HotDogcp
初始化为MyConstants.HotDog[0]
。
如果您在第一行之前声明static double mu =0.25;
,那么它可能会按预期执行。
答案 1 :(得分:2)
因为Java不是数学方程求解器。因此,陈述的顺序很重要。
答案 2 :(得分:0)
因为它们尚未初始化。把这个计算放在mu muls下。
将初始化放在构造函数中。外面的声明。