打字猴:1.700474244e+09
1700474244
1700474245 for(char ch:exprStr.toCharArray()){
1700474246
1700474247 if(ch!=’+’ && ch!=’-‘){
1700474248
1700474249 //解决重复参数的问题
1700474250
1700474251 if(!map.containsKey(String.valueOf(ch))){
1700474252
1700474253 String in=(new BufferedReader(new InputStreamReader
1700474254
1700474255 (System.in))).readLine();
1700474256
1700474257 map.put(String.valueOf(ch),Integer.valueOf(in));
1700474258
1700474259 }
1700474260
1700474261 }
1700474262
1700474263 }
1700474264
1700474265 return map;
1700474266
1700474267 }
1700474268
1700474269 }
1700474270
1700474271 其中,getExpStr是从键盘事件中获得的表达式,getValue方法是从键盘事件中获得表达式中的元素映射值,运行过程如下。
1700474272
1700474273 }
1700474274
1700474275 ❑首先,要求输入公式。
1700474276
1700474277 请输入表达式:a+b-c
1700474278
1700474279 ❑其次,要求输入公式中的参数。
1700474280
1700474281 请输入a的值:100
1700474282
1700474283 请输入b的值:20
1700474284
1700474285 请输入c的值:40
1700474286
1700474287 ❑最后,运行出结果。
1700474288
1700474289 运算结果为:a+b-c=80
1700474290
1700474291 看,要求输入一个公式,然后输入参数,运行结果出来了!那我们是不是可以修改公式?当然可以,我们只要输入公式,然后输入相应的值就可以了,公式是在运行时定义的,而不是在运行前就制定好的,是不是类似于初中学过的“代数”这门课?先公式,然后赋值,运算出结果。
1700474292
1700474293 需求已经开发完毕,公式可以自由定义,只要符合规则(有变量有运算符合)就可以运算出结果;若需要扩展也非常容易,只要增加SymbolExpression的子类就可以了,这就是解释器模式。
[ 上一页 ]  [ :1.700474244e+09 ]  [ 下一页 ]