import java.sql.Timestamp;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import bsh.Interpreter;
public class Test {
public static void main(String[] args) {
String rule = "a + b * c - d / e";
Test test= new Test();
List<ParaVo> list = test.setParam();
String retValue = test.calcPoint(rule, list);
System.out.println("计算结果为:" + retValue);
}
private List<ParaVo> setParam(){
List<ParaVo> list = new ArrayList<ParaVo>();
ParaVo vo = new ParaVo();
vo.setName("a");
vo.setValue(1);
list.add(vo);
vo = new ParaVo();
vo.setName("b");
vo.setValue(2);
list.add(vo);
vo = new ParaVo();
vo.setName("c");
vo.setValue(3);
list.add(vo);
vo = new ParaVo();
vo.setName("d");
vo.setValue(4);
list.add(vo);
vo = new ParaVo();
vo.setName("e");
vo.setValue(5);
list.add(vo);
return list;
}
private String calcPoint(String rule, List<ParaVo> list){
String value = "0";
try {
Interpreter interpreter = new Interpreter();
for(ParaVo vo : list){
interpreter.set(vo.getName(), vo.getValue());
}
double va = (Double) interpreter.eval(rule);
DecimalFormat df = new DecimalFormat("#.00");
value = df.format(va);
} catch (Exception e) {
e.printStackTrace();
value = "-1";
}
return value;
}
public class ParaVo {
String name;
double value;
public ParaVo(String name, double value) {
super();
this.name = name;
this.value = value;
}
public ParaVo() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getValue() {
return value;
}
public void setValue(double value) {
this.value = value;
}
}
}
BeanShell实现公式管理
最新推荐文章于 2024-07-08 21:35:13 发布