public int expressionToResult(String str, Stack<Integer> number, Stack<Character> operator) {
//将str转换为char
char[] chars = str.toCharArray();
//遍历char数组
for (char x : chars) {
if (x == '+' || x == '-' || x == '*' || x == '/') {
//取此时符号栈顶元素的优先值和此时的入栈的符号比较
if (!op.isEmpty()) {
int n1 = number.pop();
int n2 = number.pop();
int result = calResult(operator.pop(), n2, n1);
number.push(result);
operator.push(x);
} else {
//符号栈为空 不比较直接加入符号栈
operator.push(x);
}
} else if (Character.isDigit(x)) {
//数字进栈
number.push(Integer.parseInt(String.valueOf(x)));
}
} //增强for...
// 遍历完表达式 栈中可能还有符号
while (true) {
if (operator.isEmpty()) {
break;
} else {
int n1 = number.pop();
int n2 = number.pop();
number.push(calResult(operator.pop(), n2, n1));
}
}
return number.pop();
}
//计算两个数的值
public int calResult(char c, int x, int y) {
switch (c) {
case '+':
return x + y;
case '-':
return x - y;
default:
return -1;
}
}