将中缀转换为带有> 1位数的后缀

时间:2017-10-13 20:41:01

标签: java

我有一个方法可以将表达式从其中缀表示法转换为后缀表示法,但我不知道如何处理大于9的数字。

例如, 如果我有12-(5 + 3)我不希望它被表达为1253 + - 而是12 53 + - (或类似形式)。

我有什么:

private void postfix(){
        String result = "";
        LinkedStack<Character> stack = new LinkedStack<Character>();
         for (int i = 0; i < expression.length(); i++){
             char c = expression.charAt(i);
             if (Character.isDigit(c)){
                    result += c;
             }
             else if (c == '('){
                    stack.push(c);
             }
             else if (c == ')'){
                    while (!stack.isEmpty() && stack.peek() != '('){
                        result += stack.pop();
                    }
                    if (!stack.isEmpty() && stack.peek() != '('){
                        result = "Invalid Expression";   
                    }
                    else{
                        stack.pop();
                    }
                }
             else if(isOperator(c)){ 
                 while (!stack.isEmpty() && weight(c) <= weight(stack.peek()))
                        result += stack.pop();
                 stack.push(c);
             }
         }
        postfixed = result;
    }

1 个答案:

答案 0 :(得分:1)

您需要修改代码的这一部分:

if (Character.isDigit(c)){
    result += c;
}

如果表达式为“1234”,您只需计算1 + 2 + 3 + 4而不是将1234视为单个数字。

您可以做的是将连续数字收集到String。然后,使用Integer.parseInt()

将字符串转换为Integer