常規(guī)的表達式求值划栓,我們都會根據(jù)計算的優(yōu)先級來計算。比如*/的優(yōu)先級就高于+-损姜。但是小易所生活的世界的表達式規(guī)則很簡單饰剥,從左往右依次計算即可,而且小易所在的世界沒有除法摧阅,意味著表達式中沒有/汰蓉,只有(+, - 和 )。現(xiàn)在給出一個表達式棒卷,需要你幫忙計算出小易所在的世界這個表達式的值為多少
輸入描述:
輸入為一行字符串顾孽,即一個表達式。其中運算符只有-,+,比规。參與計算的數(shù)字只有0~9.
保證表達式都是合法的若厚,排列規(guī)則如樣例所示。
輸出描述:
輸出一個數(shù)蜒什,即表達式的值
輸入例子1:
3+5*7
輸出例子1:
56
代碼
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
String s = in.next();
solve(s);
}
}
private static void solve(String s) {
String operators = "+-*";
Stack<Integer> stack = new Stack<>();
Stack<Character> os = new Stack<>();
for(int i=0;i<s.length();i++) {
if(s.charAt(i)>='0' && s.charAt(i)<='9') {
stack.push(Integer.valueOf(s.charAt(i)+""));
if(stack.size() == 2) {
int a = stack.pop();
int b =stack.pop();
if(os.peek() == '+') {
stack.push(a+b);
}
else if(os.peek() == '-')
stack.push(b-a);
else if(os.peek() == '*')
stack.push(b*a);
}
}
else {
os.push(s.charAt(i));
}
}
System.out.println(stack.pop());
}
}