`

BeanShell实现公式管理

 
阅读更多
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;
		}
	}
}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics