中缀表达式转后缀表达式+后缀表达式的计算+中缀表达式的合法性校验

本文介绍了如何进行中缀表达式的合法性校验、转换为后缀表达式以及如何计算后缀表达式。通过示例详细解释了每个步骤,包括操作符的处理、括号匹配和计算过程。
摘要由CSDN通过智能技术生成

下面所述方法支持整数的+、-、*、/、()操作

运行结果:

描述:

中缀表达式:通用的算术或逻辑公式表示方法,操作符是以中缀的形式处于操作数的中间,平时常用的算术表示方法。

后缀表达式:  后缀表达式是将操作符置于操作数的后面,如: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
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值