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の下に置きます。
コンストラクター内に初期化を配置します。外の宣言。