我正在尝试创建一个程序,该程序将接受后缀表达式的输入,评估操作数是否有效并将运算符应用于这些操作数。
我知道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();
我现在需要处理用户键入的内容。我更容易解决这个问题。
答案 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