2015-12-17 78 views
0

我使用singularsys的这个“Math Expression Parser”库。下面是它的文档:Official tutorialsDocumentation检查数组是否包含数字Jep

我想要做的是这样的:

Jep jep = new Jep(); 

    jep.addVariable("ARR", new int[]{1,2,3}); 
    jep.parse("ARR == 3"); 

    Object result = jep.evaluate(); 
    boolean ok = false; 
    if(result != null)ok = Boolean.valueOf(result.toString()); 
    System.out.println(ok); 

我给自己定了一个名为ARR变量,它包含数字1,2,和3 我需要它检查数组是否包含数字3,并返回“true”。

任何想法运算符或函数的使用,或者甚至可能吗?我在文档中找不到任何东西,但我有一种感觉,它可以以某种方式实现。

+0

我不熟悉这个库,但它看起来是'jep.parse(“ARR = = 3“);'是错的。首先,您需要创建矢量,[矢量示例](http://www.singularsys.com/jep/doc/html/types.html),然后使用Ele Ele Ele类(http://www.singularsys.com) /jep/doc/javadoc/index.html?com/singularsys/jep/functions/Ele.html)在这个向量中找到一个对象。方法,'ele(java.lang.Object vec,java.lang.Object indexObject)'似乎适合您的需要。你可能喜欢用“singularsys”和“Jep”来标记你的问题以获得更好的回应。 –

+0

@Sabir_Khan:谢谢,我找到了一个可行的解决方案。见下面的反应。 – Heidi

回答

0

我最终建立一个自定义功能:

public static class JepContains extends BinaryFunction 
    { 
     public Object eval(Object arg1, Object arg2) 
     { 
      int[] arr = (int[])arg1; 
      int target = ((Double)arg2).intValue();   
      for(double i : arr) 
       if(i==target) 
        return true;   
      return (Object)false; 
     } 
    } 

下面是我如何使用它:

jep.addFunction("contains",new JepContains()); 
jep.addVariable("ARR", new int[]{1,2,3}); 
jep.parse("contains(ARR, 2)"); // returns "true" 
相关问题