首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用JEP计算Java中的表达式

用JEP计算Java中的表达式
EN

Stack Overflow用户
提问于 2022-03-07 08:48:38
回答 1查看 71关注 0票数 0

我使用杰普 ()作为需求。当有以下格式的表达式并将变量替换为数值时,一切都会顺利进行。

例如:

代码语言:javascript
复制
String formula = "(A || B )" ;
JEP jep = new JEP();
jep.addVariable("A", -1.0);
jep.addVariable("B", 0.0);
jep.parseExpression(formula);
Number value = jep.getValue();
System.out.println("Value: " +value);


-----------------------------

Value : 0.0

但是,当A和B的值是布尔值时(如(真或假))会怎样呢?有人能建议JEP如何支持布尔输入场景吗?

代码语言:javascript
复制
String formula = "(A || B )" ;
JEP jep = new JEP();
jep.addVariableAsObject("A", Boolean.TRUE); 
jep.addVariableAsObject("B", Boolean.TRUE); 

jep.parseExpression(formula);
Object val = jep.getValueAsObject();
System.out.println("Value: " +val); // gives null
EN

回答 1

Stack Overflow用户

发布于 2022-11-07 12:37:59

注释是错误的,Java支持布尔值:http://www.singularsys.com/jep/doc/html/operators.html

我搞不懂你在哪里找到的函数addVariableAsObject,getValueAsObject?在文档中它们并不存在。

这样做很好:

代码语言:javascript
复制
    String formula = "(A || B )" ;
    Jep jep = new Jep();
    try {
        jep.addVariable("A", Boolean.TRUE); 
        jep.addVariable("B", Boolean.TRUE);
        jep.parse(formula);
        Object result = jep.evaluate();
        System.out.println("result = " + result);
    } catch (JepException e) {
        System.out.println("An error occurred: " + e.getMessage());
    }   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71378457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档