使用java在中缀到后缀应用程序中获得错误输出

使用java在中缀到后缀应用程序中获得错误输出,java,infix-notation,stack,postfix-notation,Java,Infix Notation,Stack,Postfix Notation,我最近编写了一个java程序,它接受中缀表达式并将其转换为后缀表达式。它在大多数情况下都能工作,但我得到了一些表达式的错误输出。例如,表达式a+b+c+d+e将在应该输出时输出abcde+ a b+c+d+e+ import java.util.Stack; public class ITP { public static Stack<Character> stack; public static String inFixExp; public static

我最近编写了一个java程序,它接受中缀表达式并将其转换为后缀表达式。它在大多数情况下都能工作,但我得到了一些表达式的错误输出。例如,表达式a+b+c+d+e将在应该输出时输出abcde+ a b+c+d+e+

import java.util.Stack;
public class ITP {

    public static Stack<Character> stack;
    public static String inFixExp;
    public static String postFixExp = "";

    public static String infixToPostfix(String exp){
        ITP o = new ITP();
        stack = new Stack<Character>();
        inFixExp = exp;

        for (int i = 0; i < inFixExp.length(); i++) {

            if (inFixExp.charAt(i) == '(')
                stack.push(inFixExp.charAt(i));
            else if (inFixExp.charAt(i)==')'){
                while (stack.peek()!='('){
                    postFixExp += stack.pop();       
                }
                stack.pop();
            }else if ((inFixExp.charAt(i)=='*')||(inFixExp.charAt(i)=='/')||(inFixExp.charAt(i)=='+')||(inFixExp.charAt(i)=='-')){
                while(!stack.isEmpty() && o.getPredence(inFixExp.charAt(i)) < o.getPredence(stack.peek()))
                    postFixExp += stack.pop();
                stack.push(inFixExp.charAt(i));
            }else
                postFixExp += inFixExp.charAt(i);

        }
        while(!stack.isEmpty())
                postFixExp += stack.pop();



        return postFixExp;
    }

    public int getPredence(Object op) {

        if((op.equals("*")) || (op.equals("/")))
            return 3;
        else if((op.equals("+"))||(op.equals("-")))
            return 1;
        else
            return 0;
    }

}
import java.util.Stack;
公共类ITP{
公共静态堆栈;
公共静态字符串inFixExp;
公共静态字符串postfix=“”;
公共静态字符串infixToPostfix(字符串exp){
ITP o=新的ITP();
堆栈=新堆栈();
inFixExp=exp;
对于(int i=0;i
我发现如果我用你的


检查
charAt()
检查
字符串
,尝试与
字符
进行比较。

谢谢!这完美地解决了问题。不客气。就我个人而言,我尽量不在方法签名中使用对象,因为对象超类型可能会导致用户无法键入。不过,在这种情况下,这不是很相关。
if ((inFixExp.charAt(i) == '*') || ...