Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package zadanie4;
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- import java.util.HashMap;
- import java.util.Map;
- public class Calc {
- Map<String, Calculation> map = new HashMap<>();
- public Calc(){
- map.put("+", new AddCalculation());
- map.put("-", new SubtractCalc());
- map.put("*", new MultiplyCalc());
- map.put("/", new DivideCalc());
- }
- public String doCalc (String cmd) {
- try{
- String [] arr = cmd.split(" +");
- BigDecimal op1 = new BigDecimal(arr[0]);
- BigDecimal op2 = new BigDecimal(arr[2]);
- Calculation calculation = map.get(arr[1]);
- return calculation.calculate(op1, op2).toString();
- } catch(Exception ex){
- return "Invalid command to calc";
- }
- }
- interface Calculation {
- BigDecimal calculate (BigDecimal op1, BigDecimal op2);
- }
- class AddCalculation implements Calculation{
- public BigDecimal calculate (BigDecimal op1, BigDecimal op2){
- return op1.add(op2);
- }
- }
- class SubtractCalc implements Calculation{
- public BigDecimal calculate (BigDecimal op1, BigDecimal op2){
- return op1.subtract(op2);
- }
- }
- class DivideCalc implements Calculation{
- public BigDecimal calculate (BigDecimal op1, BigDecimal op2){
- return op1.divide(op2, 7, RoundingMode.HALF_UP);
- }
- }
- class MultiplyCalc implements Calculation{
- public BigDecimal calculate (BigDecimal op1, BigDecimal op2){
- return op1.multiply(op2);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement