打字猴:1.700474123e+09
1700474123 解析器的开发工作已经完成了,但是需求还没有完全实现。我们还需要对解析器进行封装,封装类Calculator如代码清单27-6所示。
1700474124
1700474125 代码清单27-6 解析器封装类
1700474126
1700474127 public class Calculator{
1700474128
1700474129 //定义表达式
1700474130
1700474131 private Expression expression;
1700474132
1700474133 //构造函数传参,并解析
1700474134
1700474135 public Calculator(String expStr){
1700474136
1700474137 //定义一个栈,安排运算的先后顺序
1700474138
1700474139 Stack<Expression>stack=new Stack<Expression>();
1700474140
1700474141 //表达式拆分为字符数组
1700474142
1700474143 char[]charArray=expStr.toCharArray();
1700474144
1700474145 //运算
1700474146
1700474147 Expression left=null;
1700474148
1700474149 Expression right=null;
1700474150
1700474151 for(int i=0;i<charArray.length;i++){
1700474152
1700474153 switch(charArray[i]){
1700474154
1700474155 case’+’://加法
1700474156
1700474157 //加法结果放到栈中
1700474158
1700474159 left=stack.pop();
1700474160
1700474161 right=new VarExpression(String.valueOf(charArray[++i]));
1700474162
1700474163 stack.push(new AddExpression(left,right));
1700474164
1700474165 break;
1700474166
1700474167 case’-‘:
1700474168
1700474169 left=stack.pop();
1700474170
1700474171 right=new VarExpression(String.valueOf(charArray[++i]));
1700474172
[ 上一页 ]  [ :1.700474123e+09 ]  [ 下一页 ]