2016-11-25 22 views
0

對不起,我的英語。更新的問題:在java中檢查表達式

語言C#:

using LV.Parsenet.dll; 

var result = "IF(TL_HS_NGUNG_LUONGKY1 = 1, 0, TL_HS_K_DC_KY1 * NS_HSL * TL_HS_TL_TTDV)"; 
Parser m_cParser = new Parser(); 
ExpressionTree m_oExpressionTree = null; 

try 
{ 
    m_oExpressionTree = m_cParser.Parse(result); 
} 
catch (Exception ex) 
{ 
    ex.Message(); 
} 

以上C#代碼,該方法解析檢查輸入參數。我會知道公式字符串返回true或false。我正在使用lv.parsenet.dll
我在哪裏可以找到像那樣的圖書館在Java中檢查公式?

謝謝大家

+0

不明確的問題.. – MVCNoob

+0

請檢查此http://stackoverflow.com/help/mcve並添加更多信息 – grsdev7

+0

嘿泉,正如已經提到的,你的問題有點不清楚。請查看幫助中心的[問]文章,瞭解如何改進它的一些提示。 – Gulllie

回答

0

你可以重寫你的表達

(TL_HS_NGUNG_LUONGKY1 == 1)? 0: TL_HS_K_DC_KY1 * NS_HSL * TL_HS_TL_TTDV; 

因爲它成爲JavaScript表達式,你可以使用它作爲以下

public static void main(String[] args) throws ScriptException, MalformedURLException, IOException { 
    ScriptEngineManager manager = new ScriptEngineManager(); 
    ScriptEngine engine = manager.getEngineByName("js"); 
    engine.getContext(); 
    engine.eval("TL_HS_NGUNG_LUONGKY1=10"); 
    engine.eval("TL_HS_TL_TTDV=10"); 
    engine.eval("TL_HS_K_DC_KY1=20"); 
    engine.eval("NS_HSL=20"); 
    Object result = engine.eval("(TL_HS_NGUNG_LUONGKY1 == 1)? 0: TL_HS_K_DC_KY1 * NS_HSL * TL_HS_TL_TTDV;"); 
    System.out.println(result); 
} 

或者使用被稱爲Shy-外部庫Ta

public static void main(String[] arg){ 
    ExpressionsEvaluator evalExpr = new ExpressionsBuilder("IF(TL_HS_NGUNG_LUONGKY1 == 1, 0, TL_HS_K_DC_KY1 * NS_HSL * TL_HS_TL_TTDV)").build(); 
    Map<String, Object> variables = new HashMap<String, Object>(); 
    variables.put("TL_HS_NGUNG_LUONGKY1", 10); 
    variables.put("TL_HS_K_DC_KY1", 10); 
    variables.put("NS_HSL", 1); 
    variables.put("TL_HS_TL_TTDV", 12); 
    System.out.println(evalExpr.eval(variables)); 

}