実現したいこと
setterαもしくはβから取得値があった場合、宣言済のb1及びb2へ代入を行って更新し、
合計した結果を同じく宣言済のbsumへ代入を行い出力する。
理想とする動きは上記となります。
発生している問題・分からないこと
ですが、宣言済のBigDecimal型へ値を代入する方法がわからず頓挫しております。
BigDecimal型への設定は宣言時のみであり、代入によって値を変更することはできないのでしょうか。
初歩的な内容となりますが、どうかよろしくお願いします。
該当のソースコード
BigDecimal bsum = new BigDecimal(0); BigDecimal b1 = new BigDecimal(0); BigDecimal b2 = new BigDecimal(0); if (setterα != null) || (setterβ != null) { if (setterα != null) { b1 = stter;} if (setterβ != null) { b2 = stter;} bsum = b1.add(b2); } System.out.println(bsum);
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
[BigDecimal]型への値の設定(代入)は、宣言時のみ行っているパターンしか見つけられず、
また実際に[処理イメージ]のように組んでもエラーが解消されない。
補足
特になし
>エラーが解消されない
そのエラーの内容を質問に追加してください。
また、コードの断片では無く実行してそのエラーが出る最小のコードをご提示願えますか。
(setterα, setterβ, stter の 3 つが何なのか分かりません。)
BigDecimal (Java Platform SE 7)
https://docs.oracle.com/javase%2F7%2Fdocs%2Fapi%2F%2F/java/math/BigDecimal.html
> Immutable, ...
イミュータブルなので変更できません。なので、新たにインスタンスを作ることになります。
b1 = new BigDecimal(setterα);
b2 = new BigDecimal(setterβ);
もしくは、ternary operator を使って以下の様にしてもよいかと思います。
BigDecimal b1 = setterα != null ? new BigDecimal(setterα) : BigDecimal.ZERO;
BigDecimal b2 = setterβ != null ? new BigDecimal(setterβ) : BigDecimal.ZERO;
BigDecimal bsum = b1.add(b2);
