在Java中处理后缀表达式

在Java中处理后缀表达式,java,expression,postfix-operator,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:");

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

我知道有
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.util.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());
}       
publicstaticvoidmain(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
堆栈=新堆栈();
System.out.println(“请输入后缀表达式:”);
字符串方程=scan.nextLine();
字符串[]项=方程式。拆分(“”);
for(字符串s:术语){
如果(s.equals(“+”)stack.push(stack.pop()+stack.pop());
如果(s.equals(“-”)stack.push(-stack.pop()+stack.pop());
如果(s.equals(“*”)stack.push(stack.pop()*stack.pop());
否则,如果(s.等于(“/”){
int a=stack.pop();
intb=stack.pop();
堆栈推送(b/a);
}
else stack.push(Integer.parseInt);
}
System.out.println(“结果:+stack.pop());
}       

有关更详细的示例,请查看您已经尝试过的方法?