Java根据计算公式和参数计算结果
import java.util.HashMap;
import java.util.Map;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class formulaToCalculate {
static ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");
public static void main(String[] args) {
String formula = "(amount*day)/rate+year/day";
String params = "amount,1.2,day,10,rate,15,month,6,year,9";
convertToFormula(formula, params);
}
/**
* 根据公式,参数计算结果
* @param formula
* @param params
* @return
*/
@SuppressWarnings("rawtypes")
public static String convertToFormula(String formula, String params) {
String[] split = params.split(",");
Map<String, Object> map = new HashMap<String, Object>();
for (int i = 0; i < split.length - 1;) {
map.put(split[i], split[i + 1]);
i = i + 2;
}
for (Map.Entry entry : map.entrySet()) {
String key = (String) entry.getKey();
String value = (String) entry.getValue();
formula = formula.replaceAll(key, value);
}
Object eval = null;
try {
eval = jse.eval(formula);
System.out.println(eval);
} catch (Exception t) {
}
return String.valueOf(eval);
}
}