为了账号安全,请及时绑定邮箱和手机立即绑定

java表达式计算

java表达式计算

读者123 2017-01-21 21:12:31
问题描述  输入一个只包含加减乖除和括号的合法表达式,求表达式的值。其中除表示整除。输入格式  输入一行,包含一个表达式。输出格式  输出这个表达式的值。样例输入1-2+3*(4-5)样例输出-4数据规模和约定  表达式长度不超过100,表达式运算合法且运算过程都在int内进行。
查看完整描述

2 回答

已采纳
?
慕粉1529473653

TA贡献8条经验 获得超2个赞

根据算术四则运算的规则:

         a.  从左算到右

         b. 先乘除,后加减

         c. 先括号内,后括号外

得到算符优先表,作为计算表达式计算顺序的依据。

如:q1为先来的算符,q2为后来的算符。如3+5+7,前面的+为q1,后面的+为q2,q1>q2。

//img1.sycdn.imooc.com//58842be3000130f104090262.jpg

算法思想

1. 设定两栈:运算符栈,操作数栈;

2.  栈初始化:设操作数栈为空;运算符栈的栈底元素为表达式起始符‘#’;

3.  依次读入字符:是操作数则入操作数栈,是运算符则要判断其与运算符栈栈顶元素的优先级:

     if 栈顶算符 > 运算符:则运算符栈出一算符,操作数栈出两操作数,计算,结果压入操作数栈; 

          运算符 = 栈顶算符:运算符栈出一算符与读取到的算符抵消;

          栈顶算符 < 运算符:压入算符栈。

4.  重复执行第3小点,直到读取到‘#’号,与算符栈顶的‘#’相抵消,最后算符栈为空,操作数栈只有一数值,即为结果。

    编程的东西自己去练练手,实现的流程都在上面了

查看完整回答
1 反对 回复 2017-01-22
?
沥莫

TA贡献1条经验 获得超0个赞

想问一下,你等等程序写好了吗?可以借鉴一下吗
查看完整回答
反对 回复 2017-06-06
  • 2 回答
  • 0 关注
  • 2341 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信