只能运算基本的加减乘除,采用Java栈的形式书写。
public static int calculate(String s) { char sign = '+';//为了方便直接把第一个数加入到栈中 Stack<Integer> stack = new Stack<Integer>(); int num = 0;//记录当前数字的值 int sum = 0;//记录运算结果 for (int i = 0; i < s.length(); i++) { char cur = s.charAt(i); if (cur >= '0') {//空格和加减乘除的ASCII都小于零 num = num * 10 - '0' + cur;//字符'4'-'0'等于int 4;×10可能数字不止一位 } if ((cur < '0' && cur != ' ') || i == s.length() - 1) { //判断上一个符号 switch (sign) {//只算乘除,剩下的全以加法的形式储存 case '+': stack.push(num); break; case '-': stack.push(-num); break; case '*': stack.push(stack.pop() * num); break; case '/': stack.push(stack.pop() / num); break; } sign = cur;//记录当前的符号,符号总要等符号后的数出来后才能使用 num = 0;//运算后数字清零等待记录下一个数字 } } while (!stack.isEmpty()) {//把栈中的数字相加 sum = sum + stack.pop(); } return sum; }