Calculator.java
上传用户:hensond
上传日期:2021-12-27
资源大小:817k
文件大小:1k
源码类别:

软件工程

开发平台:

Java

  1. package com.company.section1;
  2. import java.util.HashMap;
  3. import java.util.Stack;
  4. /**
  5.  * @author cbf4Life cbf4life@126.com
  6.  * I'm glad to share my knowledge with you all.
  7.  * 计算器
  8.  */
  9. public class Calculator {
  10. //定义的表达式
  11. private Expression expression;  
  12. //构造函数传参,并解析
  13. public Calculator(String expStr){
  14. //定义一个堆栈,安排运算的先后顺序
  15. Stack<Expression> stack = new Stack<Expression>();
  16. //表达式拆分为字符数组
  17. char[] charArray = expStr.toCharArray();
  18. //运算
  19. Expression left = null;
  20. Expression right = null;
  21. for(int i=0;i<charArray.length;i++){
  22. switch(charArray[i]) {
  23. case '+': //加法
  24. //加法结果放到堆栈中
  25. left = stack.pop();
  26. right = new VarExpression(String.valueOf(charArray[++i]));
  27. stack.push(new AddExpression(left,right));
  28. break;
  29. case '-':
  30. left = stack.pop();
  31. right = new VarExpression(String.valueOf(charArray[++i]));
  32. stack.push(new SubExpression(left,right));
  33. break;
  34. default:  //公式中的变量
  35. stack.push(new VarExpression(String.valueOf(charArray[i])));
  36. }
  37. }
  38. //把运算结果抛出来
  39. this.expression = stack.pop();
  40. }
  41. //开始运算
  42. public int run(HashMap<String,Integer> var){
  43. return this.expression.interpreter(var);
  44. }
  45. }