使用java在中缀到后缀应用程序中获得错误输出
我最近编写了一个java程序,它接受中缀表达式并将其转换为后缀表达式。它在大多数情况下都能工作,但我得到了一些表达式的错误输出。例如,表达式a+b+c+d+e将在应该输出时输出abcde+ a b+c+d+e+使用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
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) == '*') || ...