java实现中缀表达式转后缀表达式

Posted 无知的家伙

tags:

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

技术分享
 1 package postfix;
 2 
 3 import java.util.Stack;
 4 
 5 /**
 6  * 
 7  * @author DELL 将中缀表达式转化为后缀表达式
 8  */
 9 
10 public class Expression {
11     private StringBuffer iExp; // 存储中缀表达式
12     private Stack stack;
13     private StringBuffer pExp; // 存储后缀表达式
14 
15     public Expression(String s) {
16         iExp = new StringBuffer(s);
17         stack = new Stack();
18         pExp = new StringBuffer();
19     }
20 
21     public String toPostfix() throws Exception {
22         while (iExp.length() != 0) {
23             char c = iExp.charAt(0);
24             iExp.deleteCharAt(0);
25             switch (c) {
26             case ‘0‘:
27             case ‘1‘:
28             case ‘2‘:
29             case ‘3‘:
30             case ‘4‘:
31             case ‘5‘:
32             case ‘6‘:
33             case ‘7‘:
34             case ‘8‘:
35             case ‘9‘:
36                 pExp.append(c);
37                 break;
38             case ‘(‘:
39                 stack.push(c);
40                 break;
41             case ‘)‘:
42                 while (stack.peek() != (Object) ‘(‘) {
43                     pExp.append(stack.pop());
44                 }
45                 stack.pop();
46                 break;
47             case ‘+‘:
48             case ‘-‘:
49                 while (!stack.isEmpty() && stack.peek() != (Object) ‘(‘) {
50                     pExp.append(stack.pop());
51                 }
52                 stack.push(c);
53 
54                 break;
55             case ‘*‘:
56             case ‘/‘:
57                 while (!stack.isEmpty() && stack.peek() != (Object) ‘(‘ && stack.peek() != (Object) ‘+‘
58                         && stack.peek() != (Object) ‘-‘) {
59                     pExp.append(stack.pop());
60                 }
61                 stack.push(c);
62                 break;
63             case ‘^‘:
64                 stack.push(‘^‘);
65                 break;
66             default:
67                 System.out.println("出现错误字符"+c);
68                 break;
69             }
70 
71         }
72         while (!stack.isEmpty()) {
73             pExp.append(stack.pop());
74         }
75         return pExp.toString();
76     }
77 
78 }
View Code

撰写时间:2017-08-13 16:50:11

修改时间:

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

java简易计算机(用栈实现中缀转后缀,计算后缀表达式)

中缀表达式转后缀表达式--C# 代码实现

中缀表达式转成后缀表达式

数据结构中缀表达式转后缀表达式以及后缀转中缀表达式

中缀表达式转后缀表达式c语言实现

Java中缀表达式转后缀表达式并计算后缀表达式的值