計算從資料庫中取出的公式
阿新 • • 發佈:2019-01-04
import java.util.HashMap; import java.util.Map; import org.apache.commons.jexl2.Expression; import org.apache.commons.jexl2.JexlContext; import org.apache.commons.jexl2.JexlEngine; import org.apache.commons.jexl2.MapContext; public class Test { public static void main(String[] args) { // 執行字串表示式:(k-(x-y)*0.1),進行計算 Map<String, Object> map = new HashMap<String, Object>(); map.put("k", 10); map.put("x", 2); map.put("y", 4); String formula = "k-(x-y)*0.1"; Object result = convertToCode(formula,map); System.out.println(result); } /** * java將字串轉換成可執行程式碼 工具類 * * @param jexlExp * @param map * @return */ private static Object convertToCode(String jexlExp, Map<String, Object> map) { JexlEngine jexl = new JexlEngine(); Expression e = jexl.createExpression(jexlExp); JexlContext jc = new MapContext(); for (String key : map.keySet()) { jc.set(key, map.get(key)); } if (null == e.evaluate(jc)) { return ""; } return e.evaluate(jc); } }