在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());
}
有关更详细的示例,请查看您已经尝试过的方法?