Java Eval Formula – Java Fast Expression Parser

不知道各位有沒有這種經驗,需要一個文字的算式,
然後希望在最後能夠把他給算出來,
通常這樣的需求往往市在抽象的演算路徑上才會發生,
有寫過Perl 程式語言的朋友應該不陌生,
通常這個交給一個叫做 eval() 的系統函數執行就可以了…
不過, 很可惜的是 在JDK中並沒有類似的類別可供呼叫,
當然這其實也可以自己完成, 說穿了, 不過就是遵守 括號, 先乘除後加減的順序規則罷了!!
我想, 利用 Java 程式進行動態運算的人應該很多吧!!…
尤其是演算法部分, 在物件導向的世界裡當然是越抽象越好!!…
因此這種功能可能早就有人寫好了!!…
果然…上網找了 Java Formula Eval 之後….
有非常多的 Open Source 的 Jar…真是太感謝這些人了!!
其中最好用的就是 Java Fast Expression Parser
http://jfep.sourceforge.net/
感覺還不錯!!….推薦給你!!….
一個小小的範例程式如下:
import java.util.HashMap;
import org.mbertoli.jfep.ExpressionNode;
import org.mbertoli.jfep.ParseError;
import org.mbertoli.jfep.Parser;
public class Formula {
    public static void main(String[] args) {
        System.out.println(Formula.calculate("(2+3)"));
    }
    public static double calculate(String exp) {
        Parser parser = new Parser(exp);
        ExpressionNode root = parser.getTree();
        // Formula 算式
        // System.out.println(parser.getExpression());
        return root.getValue();
    }
   
}
 
 
廣告

About fenjj

Perfect !!??...
本篇發表於 Uncategorized。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s