下面所述方法支持整数的+、-、*、/、()操作
运行结果:
描述:
中缀表达式:通用的算术或逻辑公式表示方法,操作符是以中缀的形式处于操作数的中间,平时常用的算术表示方法。
后缀表达式: 后缀表达式是将操作符置于操作数的后面,如:3 4 +;后缀表达式的表达方式不唯一,如中缀表达式(a+b+c*d)/e,ab+cd*+e/与abcd*++e/都是其后缀表达式。
1.中缀表达式的合法性校验
分析:
将输入的表达式按操作符(+、-、*、/、左右括号)与数字(包括负数)以空格隔开,再将按照空格分隔后的字符串存入数组中,检验表达式合法分为两步,首先操作符不能在首位或者末位,其次操作符不能连续,括号必须匹配(遍历数组+栈检验),通过检验返回中缀表达式,没有通过检验返回null。
代码:
public static String check(String s){
if(s == null || s.length() == 0){
return null;
}
//1.添加空格
StringBuffer sb = new StringBuffer();
for(int i=0,len=s.length(); i<len; i++) {
char tmp = s.charAt(i);
if (tmp > '9' || tmp < '0') {//操作符
if(tmp == '-'&&(i==0 ||(i!=0 && s.charAt(i-1)=='('))){//负数的-号
int j=i;
i++;
while(i<len && '0'<=s.charAt(i) && s.charAt(i)<='9') {
i++;
}
sb.append(s.substring(j,i)).append(" ");
i--;
}else{
sb.ap