后缀表达式 Java实现

Posted shadowcharle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了后缀表达式 Java实现相关的知识,希望对你有一定的参考价值。

基本原理:

  从左到右扫描字符串:1、是操作数:压栈。  2、是操作符:出栈两个操作数,将运算结果压栈。

扫描字符串通过java.util.Scanner类实现,其next方法可以读取以空格(默认)或指定符号分割的元素。

技术图片

 

 

算法代码:

 1     public class PostfixEvaluator
 2         private final static char ADD = ‘+‘;
 3         private final static char SUBTRACT = ‘-‘;
 4         private final static char MULTIPLY = ‘*‘;
 5         private final static char DIVIDE = ‘/‘;
 6         
 7         private Stack<Integer> stack;
 8         
 9         public PostfixEvaluator() 
10             stack = new Stack<Integer>();
11         
12         
13         public int evaluate(String expr) 
14             int op1,op2,result=0;
15             String token;
16             Scanner parser = new Scanner(expr);
17             
18             while(parser.hasNext()) 
19                 token = parser.next();
20                 
21                 if(isOperator(token)) 
22                     op2 = (stack.pop()).intValue();
23                     op1 = (stack.pop()).intValue();
24                     result = evaluateSingleOperator(token.charAt(0),op1,op2);
25                     stack.push((Integer)result);
26                 else 
27                     stack.push(Integer.parseInt(token));
28                 
29             
30             return result;
31         
32         
33         private boolean isOperator(String token) 
34             return (token.equals("+") || token.equals("-") ||
35                     token.equals("*") || token.equals("/"));
36         
37         
38         private int evaluateSingleOperator(char operation,int op1,int op2) 
39             int result = 0;
40             switch(operation) 
41             case ADD:
42                 result = op1+op2;
43                 break;
44             case SUBTRACT:
45                 result = op1-op2;
46                 break;
47             case MULTIPLY:
48                 result = op1*op2;
49                 break;
50             case DIVIDE:
51                 result = op1/op2;
52             
53             return result;
54         
55     

 

以上是关于后缀表达式 Java实现的主要内容,如果未能解决你的问题,请参考以下文章

中缀表达式转后缀表达式(Java代码实现)

Java实现后缀表达式建立表达式树

java实现算术表达式求值

后缀表达式 Java实现

Java每日一题——>剑指 Offer II 036. 后缀表达式

Java每日一题——>剑指 Offer II 036. 后缀表达式