-3

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

我知道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();

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

4

1 回答 1

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

于 2015-10-22T13:59:38.493 回答