作者stenler (挖哈哈思压)
看板java
标题[问题] 如何做计算机 (分析数学式子)
时间Sun Dec 13 00:37:30 2015
As tile, 今天有一个需求, user会输入如下面这种数学式子的字串
(((1 + 2) * (3 + 6) / 3)
必须得到这个数学式子的答案(9)
请问这个演算法该怎麽实作?
印象中大学有学过 ... 似乎要用到堆叠之类 (分别push operand and operator?) ...
实在是想不到该用 java 哪些类别跟演算法阿 ...
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.250.186.57
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1449938252.A.75C.html
1F:推 LPH66: 演算法是你要自己写的, java 不会提供 12/13 00:46
2F:→ LPH66: 单论资料结构的话堆叠倒是有 java.util.Stack<> 可以用 12/13 00:46
3F:推 icydream: 可参考Postfix order 12/13 00:56
6F:→ bitlife: 依运算式复杂程度(仅四则->三角等工程型函等)以及可使用 12/14 19:26
7F:→ bitlife: 解决方案(可使用现有library甚至网站,如丢个httpget给) 12/14 19:27
8F:→ bitlife: 数学网站求值),所以要看你详细的需求 12/14 19:28
9F:→ bitlife: operator precedence和中序转後序都有其适用范围限制,最 12/14 19:29
10F:→ bitlife: 标准的一般式的最简单做法是写lex & yacc(java版)脚本 12/14 19:30
11F:推 adrianshum: 最简单就mvel,spel,甚至groovy 吧 (误 12/17 09:08