您的位置:首页 > 其它

计算后缀表达式的值(栈应用二)

2014-01-09 10:38 162 查看
static double evalPostFix() {
Stack<Double> s = new Stack<Double>();
String token;
Double a, b, result = 0.0;
boolean isNumber;
Scanner sc = new Scanner(System.in);
token = sc.next();
while (token.charAt(0) != '=') {
try {
isNumber = true;
result = Double.parseDouble(token);
} catch (Exception e) {
isNumber = false;
}
if (isNumber)
s.push(result);
else {
switch (token.charAt(0)) {
case '+':
a = s.pop();
b = s.pop();
s.push(a + b);
break;
case '-':
a = s.pop();
b = s.pop();
s.push(a - b);
break;
case '*':
a = s.pop();
b = s.pop();
s.push(a * b);
break;
case '/':
a = s.pop();
b = s.pop();
s.push(a / b);
break;
case '^':
a = s.pop();
b = s.pop();
s.push(Math.exp(a * Math.log(b)));
break;
}
}
token = sc.next();
}
return s.peek();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: