求一个动态布尔公式算法~~~~~~~~~~~~~~~~~~~~~~~~~

mengxq 2011-07-29 11:57:53
情况是这样的,比如 我将a>b||b>c&&a<d(公式的变量会先被附上值)带入到那样的公式里面去,会给我返回正确的布尔值,
公式的组合是多样的,有加减乘除,括号以及||、&&等(将字符串转换为公式计算出布尔值),大虾们都看过来吧,拜谢!
...全文
199 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
BearKin 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 shine333 的回复:]
引用 7 楼 bearkin 的回复:

引用 6 楼 shine333 的回复:
jdk1.6+, javax.script.*

Java code
public static void main(String[] args) throws Exception {
String expression = "a>b||b>c&amp;amp;&amp;amp;a<d……
[/Quote]

顶与被顶的态度是不同的
我嘞个去 2011-07-29
  • 打赏
  • 举报
回复
说实话 不太清楚!
小赖赖 2011-07-29
  • 打赏
  • 举报
回复
用antlr吧
把你的语法,用lr语言写出来,antlr会自动帮你生成词法语法解析的类
然后调用之,生成语法树,计算结果
shine333 2011-07-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 bearkin 的回复:]

引用 6 楼 shine333 的回复:
jdk1.6+, javax.script.*

Java code
public static void main(String[] args) throws Exception {
String expression = "a>b||b>c&amp;&amp;a<d";
Map<String, Object> param ……
[/Quote]
你不是觉得“顶”很邪恶嘛
BearKin 2011-07-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 shine333 的回复:]
jdk1.6+, javax.script.*

Java code
public static void main(String[] args) throws Exception {
String expression = "a>b||b>c&&a<d";
Map<String, Object> param = new HashMap<String,……
[/Quote]


顶个

Java6支持运行脚本语言 不过LZ你最好预先准备好 如果光是公式还好 以后要是让你调用JAVA函数可别2了

http://www.cnblogs.com/jssy/archive/2006/10/23/537101.html
shine333 2011-07-29
  • 打赏
  • 举报
回复
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);
}
mengxq 2011-07-29
  • 打赏
  • 举报
回复
TO2楼:不会;
TO3楼:说得很清楚了吧,就是a=3,b=4,然后有a>b,替换后就是3>4,把3>4转到公式里面去算出布尔值出来;
TO4楼:下了,不过没有整合好,感觉少好多东西,没有测试成功
飞跃颠峰 2011-07-29
  • 打赏
  • 举报
回复
看看这个

http://code.google.com/p/expressionoasis/
飞跃颠峰 2011-07-29
  • 打赏
  • 举报
回复
ExpressionOasis

简直就是为你贴身定制

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧