-1
大家好我在這裏有一箇中綴後綴轉換器。 它轉換中綴postifx轉換器
4 - 9 * 11 + 155 * (21 - 17)/ 3
到
4 9 11 155 21 17 3 - * + * -
所以這是非常接近。對於較短的表達式, 正確。有什麼想法嗎?
public class ExpressionTools {
static MyStack<String> operatorStack=new MyStack<String>();
public static String infixToPostfix(String infix)throws Exception{
Scanner tokenizer = new Scanner (infix);
System.out.println("hi");
String postFixExpression="";
while (tokenizer.hasNext()){
String temp=tokenizer.next();
if(temp.charAt(0)>=48&&temp.charAt(0)<=57){
for(int i=0; i<temp.length(); i++){
if(!Character.isDigit(temp.charAt(i))){
throw new PostFixException("Invalid expression"+temp);
}
}
postFixExpression+=temp+" ";
}
else if(temp.equals('(')){
operatorStack.push(temp);
}
else if(temp.equals("*")||temp.equals("+")||temp.equals("-")||temp.equals("/")){
if(!operatorStack.isEmpty()){
while(operatorStack.isEmpty()&&operatorStack.peek().equals("*")||operatorStack.isEmpty()&&operatorStack.peek().equals("/")){
postFixExpression+=operatorStack.pop()+" ";
}
}
operatorStack.push(temp);
}
else if(temp.equals(")")){
while(!operatorStack.isEmpty()){
if(!operatorStack.peek().equals("(")){
postFixExpression+=operatorStack.pop()+" ";
}
else{
operatorStack.pop();
break;
}
}
}
System.out.println(postFixExpression);
}
while(!operatorStack.isEmpty()){
postFixExpression+=operatorStack.pop()+" ";
}
System.out.println("final postfix");
System.out.println(postFixExpression);
return postFixExpression;
}
您是否在調試器中檢查了這段代碼? –