Advertisement
wadosms

Untitled

Apr 27th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.42 KB | None | 0 0
  1. package zadanie4;
  2.  
  3. import java.math.BigDecimal;
  4. import java.math.RoundingMode;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7.  
  8. public class Calc {
  9.    
  10.     Map<String, Calculation> map = new HashMap<>();
  11.    
  12.     public Calc(){
  13.         map.put("+", new AddCalculation());
  14.         map.put("-", new SubtractCalc());
  15.         map.put("*", new MultiplyCalc());
  16.         map.put("/", new DivideCalc());
  17.     }
  18.    
  19.     public String doCalc (String cmd) {
  20.         try{
  21.             String [] arr = cmd.split(" +");
  22.             BigDecimal op1 = new BigDecimal(arr[0]);
  23.             BigDecimal op2 = new BigDecimal(arr[2]);
  24.             Calculation calculation = map.get(arr[1]);
  25.             return calculation.calculate(op1, op2).toString();
  26.         } catch(Exception ex){
  27.             return "Invalid command to calc";
  28.         }
  29.     }
  30.    
  31.     interface Calculation {
  32.         BigDecimal calculate (BigDecimal op1, BigDecimal op2);
  33.     }
  34.    
  35.     class AddCalculation implements Calculation{
  36.         public BigDecimal calculate (BigDecimal op1, BigDecimal op2){
  37.             return op1.add(op2);
  38.         }
  39.     }
  40.    
  41.     class SubtractCalc implements Calculation{
  42.         public BigDecimal calculate (BigDecimal op1, BigDecimal op2){
  43.             return op1.subtract(op2);
  44.         }
  45.     }
  46.    
  47.     class DivideCalc implements Calculation{
  48.         public BigDecimal calculate (BigDecimal op1, BigDecimal op2){
  49.             return op1.divide(op2, 7, RoundingMode.HALF_UP);
  50.         }
  51.     }
  52.    
  53.     class MultiplyCalc implements Calculation{
  54.         public BigDecimal calculate (BigDecimal op1, BigDecimal op2){
  55.             return op1.multiply(op2);
  56.         }
  57.     }
  58.    
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement