抱歉我的英文。更新了问题:
语言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#代码之上,方法 Parse 检查输入参数。我会知道公式字符串返回true或false。我正在使用 lv.parsenet.dll 。
我在哪里可以找到这样的库来检查Java中的公式?
谢谢大家
答案 0 :(得分: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));
}