什么是 JEP?
JEP 是一个用于解析和计算数学表达式的 Java 库。它提供了一个简单的接口,可以让用户输入复杂的数学表达式,并返回计算结果。JEP 支持许多内置函数,例如三角函数、对数、平方根等。
代码示例
java
import org.nfunk.jep.JEP;
import org.nfunk.jep.node.Node;
import org.nfunk.jep.ParseException;
public class Main {
public static void main(String[] args) {
try {
// 创建 JEP 实例
JEP jep = new JEP();
// 启用隐式乘法(可选)
jep.setImplicitMul(true);
// 定义表达式,确保所有乘法使用 * 符号
String exp = "(sin(a) + cos(b)) * (log(c) / sqrt(d)) - (e ^ 2) + (f * g)";
// 给变量赋值
jep.addVariable("a", Math.toRadians(30)); // 30度转弧度
jep.addVariable("b", Math.toRadians(45)); // 45度转弧度
jep.addVariable("c", 100);
jep.addVariable("d", 16);
jep.addVariable("e", 4);
jep.addVariable("f", 2);
jep.addVariable("g", 3);
// 注册内置函数
jep.addStandardFunctions();
// 解析表达式
Node parse = jep.parse(exp);
// 计算结果
Object evaluate = jep.evaluate(parse);
// 输出结果
System.out.println("计算结果: " + evaluate);
} catch (ParseException e) {
System.out.println("解析错误: " + e.getMessage());
} catch (Exception e) {
System.out.println("发生错误: " + e.getMessage());
}
}
}
错误处理
在代码中,我们使用了 try-catch
语句来捕获可能发生的异常。ParseException
用于捕获解析错误,而通用的 Exception
用于捕获其他类型的错误。