处理Java中的Postfix表达式

时间:2015-10-22 12:28:23

标签: java expression postfix-operator

我正在尝试创建一个程序,该程序将接受后缀表达式的输入,评估操作数是否有效并将运算符应用于这些操作数。

我知道Scanner类要接受输入我对此没有任何问题。目前我有:

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);

    String equation;

    System.out.println("Please enter a postfix expression:");

    equation = scan.nextLine();

我现在需要处理用户键入的内容。我更容易解决这个问题。

1 个答案:

答案 0 :(得分:2)

使用java.util.Stack。以下示例仅用于演示Stack的使用。没有检查后缀表达式的有效性。

public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);

    Stack<Integer> stack = new Stack<Integer>();

    System.out.println("Please enter a postfix expression:");

    String equation = scan.nextLine();

    String[] terms = equation.split(" ");

    for (String s : terms ) {

        if (s.equals("+")) stack.push(stack.pop() + stack.pop());
        else if (s.equals("-")) stack.push(-stack.pop() + stack.pop());
        else if (s.equals("*")) stack.push(stack.pop() * stack.pop());
        else if (s.equals("/")) {
            int a = stack.pop(); 
            int b = stack.pop(); 
            stack.push( b/a );
        }
        else stack.push(Integer.parseInt(s));
    }
    System.out.println("result: " + stack.pop());
}       

有关更详细的示例,请查看http://kevinyavno.com/blog/?p=52