Java计算器实现(逆波兰式)

Java计算器实现(逆波兰式)

ID:38158253

大小:15.98 KB

页数:6页

时间:2019-06-06

Java计算器实现(逆波兰式)_第1页
Java计算器实现(逆波兰式)_第2页
Java计算器实现(逆波兰式)_第3页
Java计算器实现(逆波兰式)_第4页
Java计算器实现(逆波兰式)_第5页
资源描述:

《Java计算器实现(逆波兰式)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、packagehfw.util;importjava.util.ArrayDeque;importjava.util.Deque;/****逆波兰式*总结,java版的Eval:逆波兰和动态编译,推荐用动态编译,因为逆波兰式不认识"-4",只认识"-4"*@authorzyh*/publicclassRNP{/***运算数*/privatestaticDequeoperationNum=newArrayDeque();/***运算符*/privatestaticDequeoperator=newArray

2、Deque();/***将表达式转换为逆波兰式*@paramexpression*@return*/privatestaticvoidstr2Rnp(Stringexpression){operationNum.clear();operator.clear();intindex=0;for(inti=0;i

3、

4、c=='('

5、

6、c==')'){//操作数直接入栈StringoperationNum=ex

7、pression.substring(index,i);//区分负号和减号,如果'-'前面的一个是+-*/(认为是负号,'-'前面的是数或)认为是减号if(c=='-'){intin=i;while((expression.charAt(in-1))==''){in--;if(in==0){break;}}if(in==0){continue;}Stringprevious=expression.substring(in-1,i);if(isOperator(previous.charAt(0))

8、

9、previous.charAt(0)=='('){c

10、ontinue;}}if(operationNum.trim().length()>0){RNP.operationNum.push(operationNum.trim());}index=i+1;Stringoperator=c+"";//如果操作符是'(',直接入栈if('('==c){RNP.operator.push(operator);//如果操作符是')',将'('操作符之后的全部出栈,入栈操作数,'('')'舍弃}elseif(')'==c){while(true){Stringo=RNP.operator.pollFirst();if(

11、o==null

12、

13、"(".equals(o)){break;}RNP.operationNum.push(o);}//如果操作符是+-*/}else{Stringo=RNP.operator.peekFirst();if(o==null){//如果操作符栈为空,操作符直接入栈RNP.operator.push(operator);}else{charoperator2=o.charAt(0);//比较操作符,和操作符栈首的大小,如果操作符大,直接入栈if(operator2=='('

14、

15、operator2==')'

16、

17、orderOperator(c,o

18、perator2)){RNP.operator.push(operator);//如果操作符栈首大,将操作符栈小于操作符的全部出栈,入栈操作数,最后改操作符入栈}else{while(true){if(o==null

19、

20、o.charAt(0)=='('

21、

22、o.charAt(0)==')'){break;}if(orderOperator(c,o.charAt(0))){break;}o=RNP.operator.pollFirst();RNP.operationNum.push(o);o=RNP.operator.peekFirst();}RNP.op

23、erator.push(operator);}}}}}StringoperationNum=expression.substring(index);if(operationNum.trim().length()>0){RNP.operationNum.push(operationNum.trim());}while(RNP.operator.size()>0){RNP.operationNum.push(RNP.operator.pollFirst());}//RNP.operationNum.addAll(RNP.operator);}//判断一个字

24、符是否为运算符privatestaticbooleanisOperator(charc){re

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。