请使用JEP包,使用JAVA编写完成以下任务的程序 :

请使用JEP包,使用JAVA编写完成以下任务的程序 :

从控制台输入 数学计算公式 如 ((KM)/(X+Y)) ,解析公式的变量并从控制台输入值,同时支持+、-、、/ ,()基本数据符号,进行公式计算,并得到正确的结果,需要考虑超大数字,请使用BigDecimal类完成超大数据的运算。
如有可能,请支持 IF ,AND,OR 等逻辑操作 。
上述技术要求往往出现在目前企业HR系统中,比如可以对某人,某一类员工的薪资福利进行公式计算,系统往往需要有公式设置的功能,希望大家能够思考并掌握技术方法。(动态公式配置与运算)

1、导入JEP包

如何导入项目所需的jar包

2、代码段

package mathMatical;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import com.singularsys.jep.Jep;
import com.singularsys.jep.JepException;

public class MainOne {
	
	public static void main(String[] args) {
		
		@SuppressWarnings("resource")
		Scanner scanner = new Scanner(System.in);
		System.out.print("请输入计算公式:");
		Jep jep = new Jep(); //一个数学表达式
		String exp = scanner.nextLine(); //给变量赋值
		
		char[] stringArr = exp.toCharArray();
		List<String> list = new ArrayList<String>();
		for (int i = 0; i < stringArr.length; i++) {
			char c = stringArr[i];
			//char本质是ACSII码,与数字比较
			if (c >= 97 && c <= 122) {					
				String s = String.valueOf(c);
//				System.out.println(s);
				if(!list.contains(s)) {    
		            list.add(s);    
		        } 
			}							
		}
//		System.out.print("去除重复后的list集合"+list);
//		Object[] objects = list.toArray();//返回Object数组  
//        System.out.println("objects:"+Arrays.toString(objects));
		
		try {
			for (int i = 0; i < list.size(); i++) {
				System.out.println("请对 " + list.get(i) + "进行赋值:");
				float temp = scanner.nextFloat();	
//				为变量赋值							
				jep.addVariable(list.get(i), new BigDecimal(String.valueOf(temp)));
//				String temp = scanner.nextLine();
//				jep.addVariable(list.get(i), new BigDecimal(temp));
				
			}
			
			jep.parse(exp);
			Object result = jep.evaluate();
			System.out.println("计算结果: " + result);
			
		} catch (JepException e) {
			// TODO Auto-generated catch block
			System.out.println("An error occured: " + e.getMessage());
		}
		
	}

}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值