对于表达式的求值,一般使用中缀表达式转后缀表达式后,对后缀表达式求值,因为对于后缀或者前缀表达式计算,计算的顺序都是唯一的.
遇到操作数压入栈,否则弹出两个操作数进行操作后再压入栈中
123456789101112131415161718 | public int CalaculateSuffix(ArrayList<String> suffix){ //when meet operator, pop two elements to calaculate Stack<String> stack = new Stack<>(); for(int i = 0; i < suffix.size(); i++){ if(!(suffix.get(i).equals("+") || suffix.get(i).equals("-") || suffix.get(i).equals("*") || suffix.get(i).equals("/"))) //push into stack stack.push(suffix.get(i)); else{ //calucate String operator = suffix.get(i); String b = stack.pop(); String a = stack.pop(); String temp = String.valueOf(operate(a,b,operator)); stack.push(temp); } } return Integer.valueOf(stack.pop()); } |
---|