前提・実現したいこと
次のプログラムをBigDecimalクラスで四則演算をするようにしたい
ソースコード
java
1package prog2; 2import java.util.*; 3import java.util.function.*; 4public class BigCalculatorFunc { 5 HashMap<String,DoubleBinaryOperator> optable = new HashMap<> (); 6 void run() { 7 optable.put("+",(x,y) -> {return x+y;}); 8 optable.put("-",(x,y) -> {return x-y;}); 9 optable.put("*",(x,y) -> {return x*y;}); 10 optable.put("/",(x,y) -> {return x/y;}); 11 Scanner sc = new Scanner(System.in); 12 while(true) { 13 String [] input = sc.nextLine().split("[ ]+"); 14 if(input[0].equals("quit")) break; 15 List<String> exp = Arrays.asList(input); 16 double ans = calcFromPostExp(exp); 17 System.out.println(ans); 18 } 19 sc.close(); 20 } 21 double calcFromPostExp(List <String> postExp) { 22 LinkedList<Double> stack = new LinkedList<Double>(); 23 for(String st: postExp) { 24 System.out.println(stack); // デバッグ用 25 System.out.println(st); // デバッグ用 26 if(optable.containsKey(st)) { 27 // 演算の処理 28 double v2 =stack.pollLast(); 29 double v1 =stack.pollFirst(); 30 double value = optable.get(st).applyAsDouble(v2,v1); 31 // スタックにプッシュする処理を下に書く 32 stack.push(value); 33 } else { 34 // それ以外は数字だと思う 35 double value = Double.parseDouble(st); 36 // スタックにプッシュする処理を下に書く 37 stack.push(value); 38 } 39 } 40 double ans =stack.pop(); 41 return ans; 42 } 43 public static void main(String[] args) { 44 new BigCalculatorFunc().run(); 45 } 46}
プログラミングの勉強を始めたばかりでBigDecimalの使い方がわかりません。
そこでHashMapを使用したラムダ式の四則演算を行う上のプログラムをBigDecimalに変換する場合どのように書き換えればいいのかがわかりません
どこに手をつけて変更すると良いでしょうか
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。