在 Java 中处理后缀表达式

问题描述 投票:0回答:1

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

我知道

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();

我现在需要处理用户输入的内容。我正在寻找更简单的解决方案来解决这个问题。

java expression postfix-operator
1个回答
3
投票

使用

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());
}       

有关更详细的示例,请查看 https://web.archive.org/web/20161106172908/https://www.kevinyavno.com/blog/?p=52

© www.soinside.com 2019 - 2024. All rights reserved.