情况是这样的,比如 我将a>b||b>c&&a<d(公式的变量会先被附上值)带入到那样的公式里面去,会给我返回正确的布尔值,
公式的组合是多样的,有加减乘除,括号以及||、&&等(将字符串转换为公式计算出布尔值),大虾们都看过来吧,拜谢!

解决方案 »

  1.   

    用antlr吧
    把你的语法,用lr语言写出来,antlr会自动帮你生成词法语法解析的类
    然后调用之,生成语法树,计算结果
      

  2.   

    ExpressionOasis 简直就是为你贴身定制
      

  3.   

    看看这个http://code.google.com/p/expressionoasis/
      

  4.   

    TO2楼:不会;
    TO3楼:说得很清楚了吧,就是a=3,b=4,然后有a>b,替换后就是3>4,把3>4转到公式里面去算出布尔值出来;
    TO4楼:下了,不过没有整合好,感觉少好多东西,没有测试成功
      

  5.   

    jdk1.6+, javax.script.*
      public static void main(String[] args) throws Exception {
        String expression = "a>b||b>c&&a<d";
        Map<String, Object> param = new HashMap<String, Object>();
        param.put("a", 1);
        param.put("b", 123);
        param.put("c", 100);
        param.put("d", 9999);
        System.out.println(eval(expression, param));
      }  public static boolean eval(String expression, Map<String, Object> param) throws Exception {
        ScriptEngine engine = new ScriptEngineManager()
            .getEngineByName("javascript");
        ScriptContext ctx = new SimpleScriptContext();
        for (Entry<String, Object> entry : param.entrySet()) {
          ctx.setAttribute(entry.getKey(), entry.getValue(), ScriptContext.ENGINE_SCOPE);
        }
        return (Boolean)engine.eval(expression, ctx);
      }
      

  6.   

    顶个 Java6支持运行脚本语言 不过LZ你最好预先准备好 如果光是公式还好 以后要是让你调用JAVA函数可别2了 http://www.cnblogs.com/jssy/archive/2006/10/23/537101.html