Java 中缀转后缀
来源:互联网 发布:实时数据库软件有哪些 编辑:程序博客网 时间:2024/06/05 13:30
public class Test {/** * 一:非运算符直接输出 * 二:遇到左括号直接入栈 * 三:栈顶符号优先级高于或等于即将入栈的操作符,则将高于和等于的操作符出栈,然后再入栈 * 四:遇右括号,输出栈中的运算符,直到遇到第一个左括号,左括号出栈抛弃 * :乘除优先级相等》 加减优先级相等 * * 中缀转后缀实例,支持10以内加减法 * * */public static void main(String[] args) {String s="2+2*3/((2*(1+2)-4)*5)";char[]chars=s.toCharArray();Stack stack=new Stack<>();ArrayList list=new ArrayList<>();for(int i=0;i<chars.length;i++){char m=chars[i];//System.out.println(m);if(m!='+'&&m!='-'&&m!='*'&&m!='/'&&m!='('&&m!=')'){list.add(m);}else{if(stack.isEmpty()&&m!=')'){stack.push(m);}else{if(m==')'){/** * 清除一对括号 * */while((char)stack.peek()!='('){list.add(stack.pop());}stack.pop();}else if(m=='('){stack.push(m);}else{popContinue(m, stack, list);//最多执行两次,除了(左括号外,栈内不会有两个连续权限相等的符号}}}}while(!stack.isEmpty()){list.add(stack.pop());}System.out.println(list.toString());Stack res=new Stack();for(int i=0;i<list.size();i++){char m=(char)list.get(i);if(m!='+'&&m!='*'&&m!='-'&&m!='/'){res.push(Double.parseDouble(m+""));}else{double d1=0,d2=0;if(!res.isEmpty()){d1=(double) res.pop();}if(!res.isEmpty()){d2= (double) res.pop();}double d3 = 0;if(m=='*'){d3=d2*d1;}if(m=='+'){d3=d2+d1;}if(m=='-'){d3=d2-d1;}if(m=='/'){d3=d2/d1;}res.push(d3);}}System.out.println(res.pop());}public static void popContinue(char m,Stack stack,ArrayList list){int v1=getValues(m);int v2=getValues((char)stack.peek());if(v1>v2){stack.push(m);return ;}else{list.add(stack.pop());if(!stack.isEmpty()){popContinue(m, stack, list);}else{stack.push(m);}}}public static int getValues(char m){int i=0;if(m=='*'||m=='/'){i=2;}else if(m=='('){i=0;}else{i=1;}return i;}}
阅读全文
0 0
- Java 中缀转后缀
- java实现 中缀转后缀
- Java中缀转后缀表达式
- NYOJ467 中缀式转后缀式 java
- java中缀表达式转后缀表达式
- java 中缀转后缀(逆波兰)
- java 中缀表达式转后缀表达式
- java 中缀转后缀(逆波兰)
- JAVA中缀表达式转后缀表达式
- 中缀表达式转后缀表达式--Java
- Java中缀表达式转后缀表达式
- 【java】多项式计算(中缀转后缀)
- java中缀表达式转后缀表达式
- java实现中缀转后缀,后缀计算值
- Java 中缀表达式转后缀表达式 + 中/后缀表达式计算
- 中缀转后缀&后缀求值
- c 中缀转后缀
- 中缀转后缀
- Python语法第10讲:面向对象之继承
- Python学习中常常遇到的一些问题
- linux文件权限与分组
- 服务器内部转发和请求重定向的区别
- 获取请求主机的IP端口等信息
- Java 中缀转后缀
- 轮播图中带粘性效果的小点
- having子句的用法
- HiAR SDK入门之开启多图识别
- VS2013如何打包生成安装文件
- 字符编码说明
- 关于logcat的使用
- 云技术会颠覆IT平台吗?
- The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar