Java的表达式计算引擎 Expr4J

未知
Java
跨平台
2009-08-04
红薯

Expr4J 是一个Java的表达式计算引擎,可以用来计算例如在 Excel 单元格中的表达式等。

示例代码:

package org.boris.expr.util;

import java.io.*;
import org.boris.expr.*;
import org.boris.expr.parser.ExprParser;

public class ExprEvaluator
{
public static void main(String[] args) throws Exception {
SimpleEvaluationContext context = new SimpleEvaluationContext();
System.out.println("Expr Evaluator v1.0");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (true) {
try {
System.out.print(">");
String line = br.readLine();
if (line == null)
break;
Expr e = ExprParser.parse(line);
Exprs.toUpperCase(e);
if (e instanceof ExprEvaluatable) {
e = ((ExprEvaluatable) e).evaluate(context);
}
System.out.println(e);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

package org.boris.expr.util;

import org.boris.expr.BasicEngineProvider;
import org.boris.expr.engine.DependencyEngine;
import org.boris.expr.engine.Range;

public class DependencyExample
{
public static void main(String[] args) throws Exception {
DependencyEngine e = new DependencyEngine(new BasicEngineProvider());
e.set("B1", "=A1*2");
e.set("A1", "=12*2");
e.set("C1", "=B1*A1");
System.out.println(e.getValue(Range.valueOf("B1")));
System.out.println(e.getValue(Range.valueOf("C1")));
e.set("A1", "2");
System.out.println(e.getValue(Range.valueOf("B1")));
System.out.println(e.getValue(Range.valueOf("C1")));
}
}

加载中

评论(0)

暂无评论

暂无资讯

5
回答
能推荐一个表达式解析的java类库么?

如题: 需要解析 一个有各种double和int经过+、-、*、/、()、运算组成的表达式。 在OSChina搜索过表达式解析,在结果中尝试过Expr4J...

2011/08/09 10:49

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无博客

返回顶部
顶部