作者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/m.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