Java实现中缀表达式变后缀表达式

一.什么是中、后缀表达式

中缀就是咱平时常用的表达式,比如a+b ,c+d,两个数相关的运算符在数中间;同理后缀就是运算符在两数之后,等价ab+,cd+

二.为什么用java

因为c和c++被我忘光了,敲了一下发现啥也不会,气急败坏地用java。
参考文章:相同原理的c++实现中缀转后缀

三.代码

/**
     * 中缀表达式转换成后缀表达式
     * @param midExp 中缀表达式
     * @return posExp 后缀表达式
     */
public String calculateExpression(String midExp) {
        String posExp = new String();
        List<Character> symbols = new ArrayList<>();
        List<Character> digitals = new ArrayList<>();
        char[] midExpChar = midExp.toCharArray(); //将中缀表达式转化成一个个字符

        for(int i=0;i<midExpChar.length;i++){
            char aChar = midExpChar[i];
            if(aChar>='a' && aChar <='z'){      //数字的处理
                digitals.add(aChar);
            }else if(aChar=='+' || aChar=='-'){     //+-处理
                if(symbols == null || symbols.size() == 0){ //操作符栈为空,不加会报数组越界
                    symbols.add(aChar);
                }else{
                    while(symbols.get(symbols.size()-1)=='*' || symbols.get(symbols.size()-1)=='/'){
                        digitals.add(symbols.get(symbols.size()-1));
                        symbols.remove(symbols.size()-1);
                    }
                    symbols.add(aChar);
                }
            }else if(aChar == '*' || aChar=='/' || aChar=='('){   //*/处理
                symbols.add(aChar);
            }else if(aChar == ')'){
                while(symbols.get(symbols.size()-1)!='('){
                    digitals.add(symbols.get(symbols.size()-1));
                    symbols.remove(symbols.size()-1);
                }
                symbols.remove(symbols.size()-1);
            }
        }
        while(symbols.size()!=0){       //处理操作符栈剩余
            digitals.add(symbols.get(symbols.size()-1));
            symbols.remove(symbols.size()-1);
        }
        posExp = digitals.toString().replace(",","");       //去掉string中的逗号
        return posExp;
    }

随笔记

又过一年,放下了很多曾经觉得无比重要的东西,得到的却是不知是好是坏的自身的改变。一个人坐在自己半年前选择的角落(另我后悔不已,好无聊),每天大部分的时间和精力用在自己的身上,一个人久了思维模式也慢慢变了,思考事情的时候都会不禁思考这事本质上对我有什么好处,不再在意很多东西。日渐接受自己的自私与无耻,日渐能够容纳不同于己的事物,能够接受自己被否定被质疑被鄙视,日渐追求简单却也对不得不做的麻烦事更有耐心,日渐渴望老婆孩子热炕头,日渐敬佩毛爷爷和张居正。。。
其实很多的对立本质上是同一种东西,其实多数的思考都是矫情与庸人自扰,其实温柔的人才是最强大的(从外到内的强大,人都有柔软的地方,只是强大的人根本不怕你戳),其实没什么温水煮青蛙没什么堕落和上进,该干嘛干嘛,想那么多干啥。
我也好想要规律,温暖舒适,无忧无虑的生活。此处羡慕皮皮皓1w点。可是偏偏上天让我看到了那些阳光外的东西,冥冥中给我以引导并让我产生那些思考,可能这就是让我生而为人所要做的事吧。现在的环境已经不能让我得到更多的东西了,我需要一个更高的平台,去寻找那些拥有相同思考的人,去实现我们共同的理想。
每一个人都应该有尊严地活着,或者有尊严地死去。
满纸荒唐言,不知道自己在写些什么,管他呢,反正不扣钱。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值