Basic Calculator II

来源:互联网 发布:淘宝店铺号搜不到 编辑:程序博客网 时间:2024/06/01 19:34

Implement a basic calculator to evaluate a simple expression string.

The expression string contains only non-negative integers, +-*/ operators and empty spaces . The integer division should truncate toward zero.

You may assume that the given expression is always valid.

Some examples:

"3+2*2" = 7" 3/2 " = 1" 3+5 / 2 " = 5
public int calculate(String s) {int len;if (s == null || (len = s.length()) == 0)return 0;Stack<Integer> stack = new Stack<Integer>();int num = 0;char sign = '+';for (int i = 0; i < len; i++) {if (Character.isDigit(s.charAt(i))) {//针对"9/10"这种情况,因为charAt(i)是一位一位来的//10应该是两位//i = 2,num=1//i = 3,num=1*10+0-0=10num = num * 10 + s.charAt(i) - '0';}if ((!Character.isDigit(s.charAt(i)) && ' ' != s.charAt(i)) || i == len - 1) {if (sign == '-') {stack.push(-num);}if (sign == '+') {stack.push(num);}if (sign == '*') {stack.push(stack.pop() * num);}if (sign == '/') {stack.push(stack.pop() / num);}sign = s.charAt(i);num = 0;}}int re = 0;for (int i : stack) {re += i;}return re;}

0 0