您的位置:首页 > 编程语言 > Java开发

求后缀表达式的值

2016-03-15 22:53 441 查看
Q:

给出一个后缀表达式,如 358*2/+6- (中缀表达式为3+5*8/2-6,结果为17),写程序求出它的值。

A:

首先想到用栈来解决问题,当读到数字时取出放入栈中,读到运算符时则从栈中取出两个数进行运算并将结果存到栈中,直到字符串读取完毕,暂不考虑括号等较复杂情况。

import java.util.Stack;

public class ai {
public static void main(String []args){
String str = "358*2/+6-";
int ln = str.length();
Stack st = new Stack();
int m, n, k;
for(int i=0; i<ln; i++){
switch(str.charAt(i)){
case '+':
m=(int)st.pop();
n=(int)st.pop();
k = m + n;
st.push(k);
break;
case '-':
m=(int)st.pop();
n=(int)st.pop();
k = n - m;
st.push(k);
break;
case '*':
m=(int)st.pop();
n=(int)st.pop();
k = m * n;
st.push(k);
break;
case '/':
m=(int)st.pop();
n=(int)st.pop();
k = n / m;
st.push(k);
break;
default:
int l = (int)str.charAt(i) - 48;//ASCII码转换
st.push(l);
break;
}
}
System.out.println(st.pop());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 笔试题