我正在尝试为后缀计算器编写中缀。到目前为止,我在插入中缀表达式后得到的要么是前缀表达式,要么是代码继续运行并且什么都不做。这是我所做的:
import java.util.Scanner;
import java.util.Stack;
public class postFix {
public static StringBuilder postFixExp = new StringBuilder();
public static int priority(char ch){
if(ch == '^') return 3;
if(ch == '/' || ch == '*') return 2;
if(ch == '+' || ch == '-') return 1;
return 0;
}
public static String postfix(){
Stack<Character> st = new Stack<Character>();
Scanner scan = new Scanner(System.in);
System.out.println("Sisestage infiks: ");
String sone = scan.next();
scan.close();
for(int i = 0; i<sone.length(); i++){
char ch = sone.charAt(i);
switch(ch){
case'+':
case'-':
case'*':
case'/':
postFixExp.append(' ');
st.push(ch);
break;
// case' ':
case'(':
st.push(ch);
break;
case')':
while(st.peek() != '('){
postFixExp = postFixExp.append(st.pop());
}
st.pop();
break;
default:
while(!st.isEmpty() && st.peek() != '(' && priority(ch) <= priority(st.peek()))
{
postFixExp = postFixExp.append(st.pop());
}
st.push(ch);
break;
}
}
while(!st.isEmpty()){
postFixExp = postFixExp.append(st.pop());
}
return postFixExp.toString();
}
public static void main(String[] args) {
System.out.println(postfix());
}
}
我使用了这个伪代码。
我的代码有什么问题?
如果我输入:
1+2
它返回
+12
我想看看
1 2 + or 12+