中缀到后缀计算器产生前缀,有时继续运行

时间:2013-10-16 22:36:56

标签: java postfix-notation infix-notation

我正在尝试将中缀编码为后缀计算器。到目前为止,插入中缀表达式后我得到的是前缀表达式或代码保持运行并且什么都不做。这就是我所做的:

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());
    }
}

我使用this pseudocode

我的代码出了什么问题?

如果我输入:

1+2 

返回

+12

我想看看

1 2 + or 12+

0 个答案:

没有答案