使用ScriptEngine 通过实体类和计算公式 计算结果
2016-09-26 16:21
288 查看
使用ScriptEngine 通过实体类和计算公式 计算结果
其中有用到 ScriptEngine JSONObject hashMap iterator
public class Contents{
private Integer score1;
private Integer score2;
private Integer score3;
public Integer getScore1() {
return score1;
}
public void setScore1(Integer score1) {
this.score1 = score1;
}
public Integer getScore2() {
return score2;
}
public void setScore2(Integer score2) {
this.score2 = score2;
}
public Integer getScore3() {
return score3;
}
public void setScore3(Integer score3) {
this.score3 = score3;
}
}
@Test
public void test(){
//规则
String rule="score1+score2";
//计算参数
String[] params={"score1","score2"};
//实体类
Contents contents=new Contents();
contents.setScore1(1);
contents.setScore2(2);
contents.setScore3(3);
//对象转json
JSONObject jsonObj = JSONObject.fromObject(contents);
//
//ScriptEngineManager manager = new ScriptEngineManager();
//通过文件扩展名获取脚本引擎
ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
//将参数和实体类中的值 封装到hash中
Map<String,Object> paramValues = new HashMap<String,Object>();
for(String param:params){
paramValues.put(param,JsonUtils.getParamValue(jsonObj,param));
}
//将hash转成集合 便于循环遍历
Iterator<String> keys=paramValues.keySet().iterator();
//将key和value 封装到脚本引擎中
while(keys.hasNext()){
String key = keys.next();
if(engine.get(key)==null){
engine.put(key, paramValues.get(key));
}
}
//脚本引擎通过rule的计算公式 计算结果
try {
Object calcValue = engine.eval(rule);
} catch (ScriptException e) {
}
}
其中有用到 ScriptEngine JSONObject hashMap iterator
public class Contents{
private Integer score1;
private Integer score2;
private Integer score3;
public Integer getScore1() {
return score1;
}
public void setScore1(Integer score1) {
this.score1 = score1;
}
public Integer getScore2() {
return score2;
}
public void setScore2(Integer score2) {
this.score2 = score2;
}
public Integer getScore3() {
return score3;
}
public void setScore3(Integer score3) {
this.score3 = score3;
}
}
@Test
public void test(){
//规则
String rule="score1+score2";
//计算参数
String[] params={"score1","score2"};
//实体类
Contents contents=new Contents();
contents.setScore1(1);
contents.setScore2(2);
contents.setScore3(3);
//对象转json
JSONObject jsonObj = JSONObject.fromObject(contents);
//
//ScriptEngineManager manager = new ScriptEngineManager();
//通过文件扩展名获取脚本引擎
ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
//将参数和实体类中的值 封装到hash中
Map<String,Object> paramValues = new HashMap<String,Object>();
for(String param:params){
paramValues.put(param,JsonUtils.getParamValue(jsonObj,param));
}
//将hash转成集合 便于循环遍历
Iterator<String> keys=paramValues.keySet().iterator();
//将key和value 封装到脚本引擎中
while(keys.hasNext()){
String key = keys.next();
if(engine.get(key)==null){
engine.put(key, paramValues.get(key));
}
}
//脚本引擎通过rule的计算公式 计算结果
try {
Object calcValue = engine.eval(rule);
} catch (ScriptException e) {
}
}
相关文章推荐
- Windows平台下GCC编程之根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。 s=1+1/3+1/5+···+1/(2n-1)
- 使用Python获取Excel文件中单元格公式的计算结果
- 使用Messenger 从Activity发送数据到service 通过后台计算结果Log输出;
- 使用Java语言,使用System.in输入以下各个变量的值,并按照公式计算得出结果。 公式为: 4/3*(r+34)-9*(a+b*c)+(3+d*(2+a))/(a+b*d)
- acmore|acmore.cc1006编写程序,显示计算的结果1007可以使用以下公式计算1008转换温度1009计算圆柱体的体积1010将英尺转换为米
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Intel编译器获得一致的浮点数值计算结果
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 通过$Bitmap元文件计算NTFS分区的使用空间大小
- excel VBA 公式计算结果引用问题
- excel 复制公式计算结果问题的解决方法
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 把字符串当公式计算,并得到他的结果如字符串为200*100
- 使用Pear的RPN库处理工资计算公式