java中实现数学表达式计算时如果涉及到数学函数是怎么将函数看作一个整体?如何将函数的括号和一般的括号区别开来?如何区别减号和负号?
比如我想计算{3*(2+8)-4}+6-sin(30)
将中缀转换成后缀时,如何知道将sin(30)看作一个整体,即一个操作数,它中不是含有括号吗?
我们不能把它里面的括号看成普通的括号,我们怎样知道当出现s是函数开始,闭括号时函数结束?
比如我想计算{3*(2+8)-4}+6-sin(30)
将中缀转换成后缀时,如何知道将sin(30)看作一个整体,即一个操作数,它中不是含有括号吗?
我们不能把它里面的括号看成普通的括号,我们怎样知道当出现s是函数开始,闭括号时函数结束?
Math.abs(value)求绝对值,等等的,Math类里面又很多你想要的函数.
比如我想计算:2+(4*6)-abs(-25)
将中缀变换成后缀时,怎样识别(4*6)中'('是括号,而'abs(-25)'可以看作一个操作数,而不能把它当作一个整体看作函数?
我的意思就是如何区分这个式子中的括号和函数??
推荐:Java Math Expression Parser(http://www.singularsys.com/jep/)
以上的做法算是比较笨的办法了,代码稍微简单点,缺点是在后缀表示法中缺少了对超越函数的表示。