我正在尝试创建一个程序,该程序将接受后缀表达式的输入,评估操作数是否有效并将运算符应用于这些操作数。
我知道
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
。下面的例子只是为了演示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