[问题] 如何做计算机 (分析数学式子)

楼主: stenler (挖哈哈思压)   2015-12-13 00:37:30
As tile, 今天有一个需求, user会输入如下面这种数学式子的字串
(((1 + 2) * (3 + 6) / 3)
必须得到这个数学式子的答案(9)
请问这个算法该怎么实作?
印象中大学有学过 ... 似乎要用到堆叠之类 (分别push operand and operator?) ...
实在是想不到该用 java 哪些类别跟算法阿 ...
作者: LPH66 (-6.2598534e+18f)   2015-12-13 00:46:00
算法是你要自己写的, java 不会提供单论资料结构的话堆叠倒是有 java.util.Stack<> 可以用
作者: icydream (巧虎)   2015-12-13 00:56:00
可参考Postfix order
作者: yichen (苍穹之下任我行)   2015-12-13 10:56:00
参考良葛格中序式转后序式 http://tinyurl.com/pjhelpc后序式运算: http://tinyurl.com/qaw534l
作者: bitlife (BIT一生)   2015-12-14 19:26:00
依运算式复杂程度(仅四则->三角等工程型函等)以及可使用解决方案(可使用现有library甚至网站,如丢个httpget给)数学网站求值),所以要看你详细的需求operator precedence和中序转后序都有其适用范围限制,最标准的一般式的最简单做法是写lex & yacc(java版)脚本
作者: adrianshum (Alien)   2015-12-17 09:08:00
最简单就mvel,spel,甚至groovy 吧 (误

Links booklink

Contact Us: admin [ a t ] ucptt.com