(给ImportNew加星标,提高Java技能)
编译:ImportNew/唐尤华
如何用Java计算"5+3"、"10-40"、"10*3"这样的算术表达式?本文介绍了可使用的常见方法及各自优缺点。
1. JDK Javascript引擎
JDK1.6开始,提供了Javascript脚本引擎。可以把 String 形式的字符串通过 engine.eval() 方法执行计算。示例如下:
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
public class Test {
public static void main(String[] args) throws ScriptException{
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String foo = "40+2";
System.out.println(engine.eval(foo));
}
}
Java中的ScriptEngine理论上支持符合ECMAScript规范的语言。要确认当前Java支持哪些语言,可以执行下列代码:
import java.util.List;
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.ScriptEngineFactory;
public class Test {
public static void main(String[] args){
ScriptEngineManager mgr = new ScriptEngineManager();
List factories = mgr.getEngineFactories();
for (ScriptEngineFactory factory : factories)
{
System.out.println("ScriptEngineFactory Info");
String engName = factory.getEngineName();
String engVersion = factory.getEngineVersion();
String langName = factory.getLanguageName();
String langVersion = factory.getLanguageVersion();
System.out.printf("tScript Engine: %s (%s)n&