0

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

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+
4

0 回答 0