算数表达式的求解 Java_算术表达式求解java实现

1.定义两个栈,一个操作符(operator)栈,一个操作数(operand)栈。

2.判断表达式是否合法,合法进入3,否则进入4。

①字符合法性检验,每个字符必须是算术表达式中要求的字符;

②括号匹配检验,包括个数是否匹配,以及位置是否正确合法。

"("前不能有操作数,后不能有操作符;")"前不能有操作符,后不能有操作数。

③小数点合法性检验,其前其后都要有数字。

④操作符合法性检验,操作符两边要有操作数。

⑤区分"-"是操作数中的负号还是操作符中的减号。

3.解析表达式并运算。

①遇到操作符确定不是负号,从上一个操作符位置开始截取字符串,把结果转换成double型数据,放入操作数栈;

②遇到操作符。

如果是"+-",从操作数栈中取出两个操作数,从操作符栈中取出一个操作符做运算,把运算的结果放入操作数栈中,同时把当前遇到的操作符放入操作符栈中。

如果是"*/",判断操作符中的最后一个操作符,如果是"*/",从操作数栈中取出两个操作数,从操作符栈中取出一个操作符做运算,把运算的结果放入操作数栈中,同时把当前遇到的操作符放入操作符栈中;如果是"+-",把当前操作符放入操作符栈中。

③对于一个含有括号的算术表达式,只需从最内层括号部分开始次做②的运算,直到操作符栈空结束。

4.得到结果信息,处理完毕。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值