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と等しくないのはなぜですか
静的変数は、宣言された順序で初期化されます。
あなたの場合、初期化するとき、mu
変数はまだ0(doublesのデフォルト値)なので、に初期化HotDogcp
さHotDogcp
れMyConstants.HotDog[0]
ます。
最初の行の前に宣言static double mu =0.25;
すると、おそらく期待どおりの結果が得られます。
Javaは数式ソルバーではないからです。したがって、ステートメントの順序が重要になります。
まだ初期化されていないからです。その計算をmuplsの下に置きます。
コンストラクター内に初期化を配置します。外の宣言。