Javascript中的eval函数功能十分强大,可以执行字符串组成的代码,这是众人皆知的。
那么Java中如何实现这样的功能吗?用它吧——ScriptEngine!
Java 1.6提供了ScriptEngine接口,使得我们可以调用脚本引擎。
public static boolean calcVP(String formula, double actVal) {
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
Object calcResult = null;
try {
calcResult = engine.eval(formula);
}catch (ScriptException e) {
// TODO: handle exception
}
if (calcResult != null) {
double expVal = Double.parseDouble(calcResult.toString());
return actVal == expVal ? true : false;
}
return false;
}
一个方法起到了一个class的作用,而且Javascript引擎支持什么运算我们就支持,厉害吧~ScriptEngine是个很有用的特性,多多研究加以利用可以节省很多项目成本。
[转自
:http://www.lurenfake.com/script-engine-formula/
]
分享到:
相关推荐
幸运的是,Java6中添加了对脚本语言的支持,我们可以利用这个特性来实现计算的简单化处理。下面我们来探讨如何利用ScriptEngineManager实现字符串公式灵活计算的方法。 首先,我们可以使用ScriptEngineManager来...
"C#利用脚本做工资公式编辑器"这个项目就是一个很好的实例,它展示了如何通过JavaScript脚本引擎在.NET环境中实现复杂的业务逻辑。该项目的核心是利用JavaScript的强大计算能力,构建一个自定义的工资计算公式编辑器...
为了更好地理解`ScriptEngine`的使用,下面是一个简单的示例,演示如何使用`ScriptEngine`执行一段简单的JavaScript代码: ```java ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine...
但是,如果你需要在Java中实现类似的功能,可以创建一个自定义的解析器或利用一些第三方库来解析和执行给定的字符串。 在Java中模拟`eval`功能的一个常见方法是通过使用Java Scripting API(JSR 223),它允许你在...
VBScript是一种基于Visual Basic的脚本语言,常用于Windows环境,而JScript是微软对ECMAScript规范的实现,与JavaScript相似但不完全相同。两者都可以通过Windows ScriptHost(WSH)来执行,这是一个内置的Windows...
总的来说,Java中将字符串转化为公式计算主要是通过Java Scripting API来实现的,利用JavaScript引擎执行字符串中的表达式。这种方法适用于简单的计算,但可能不适合处理复杂或性能敏感的计算任务。在实际应用中,应...
Socket编程是一种网络通信机制,它允许两个或多个应用程序通过...在这个示例中,我们利用Socket实现了远程计算功能,让客户端能输入表达式,由服务端负责计算并返回结果,这对于分布式系统或者跨网络的应用非常有用。
在提供的压缩包文件"ScriptEngine-User-Defined-Calculations-in-C-VB-JSc.pdf"中,很可能详细介绍了如何在C#、VB、JScript和F#中使用ScriptEngine实现用户定义的计算,包括如何创建引擎实例、执行脚本、传递参数、...
8. **库和框架**:许多编程语言提供现成的库或框架来帮助实现字符串转公式,如Python的`eval`函数、JavaScript的`new Function`或者Java的`ScriptEngine`接口。这些工具简化了开发过程,但同时也需要注意上述的安全...
7. **公式求值**:你可以使用Java的`ScriptEngine`接口,尤其是`javax.script.ScriptEngineManager`和`javax.script.ScriptEngine`,来执行JavaScript引擎(Rhino或Nashorn)计算数学表达式。这样可以避免手动实现...
问题原因分析:使用ScriptEngine.eval每次都会对脚本进行编译,生成一个新的类,被GroovyClassLoader加载,大量执行计算后,将导致被加载的类数量不断增加,最终OOM。 解决办法:对计算的表达式expression进行预...
这个库使得开发人员能够轻松地在程序中处理复杂的数学计算任务,而无需手动实现复杂的解析算法。 首先,我们来理解一下`jeval`库的基本使用方法。`jeval`库提供了一个`Jeval`类,这个类的主要功能是解析和求解数学...
要使用`ScriptEngine`来运行JavaScript,首先需要添加适当的脚本引擎实现,如Nashorn引擎。Nashorn是Java 8中内置的JavaScript引擎,但自Java 11开始已被弃用。替代方案有GraalVM的JavaScript引擎,它提供了更好的...
在自动化测试中,有时我们需要在测试脚本中使用JavaScript进行动态计算或者操作DOM元素,Java ScriptEngine提供了这样的能力。通过它,测试框架可以灵活地执行JavaScript代码,与网页中的JavaScript逻辑进行交互,...
CEL4J(可能是"Call E Language for Java"的缩写)是一个库,它的核心功能是提供了一个名为Artifact的ScriptEngine实现。ScriptEngine是Java Scripting API(JSR 223)的一部分,这个API允许在Java应用程序中嵌入和...
这个过程涉及到的算法和数据结构是理解Java计算数学表达式的基础,对于开发计算工具或解析数学公式的应用非常有用。在实际编程中,可以使用已有的库,如Apache Commons Math或Java 8的`ScriptEngine`接口,来简化这...
7. **性能优化**:对于大量表达式计算,可能需要优化求值算法,例如缓存中间结果,避免重复计算,或者利用编译器优化技术提前计算部分表达式。 【标签】"源码 工具"表明这个主题可能涉及到具体代码实现和工具的使用...
在本文中,我们将深入探讨如何使用Java编程语言和Swing库构建一个计算器应用程序,并结合JavaScript的字符串计算方法。Swing是Java的一个图形用户界面(GUI)工具包,它提供了丰富的组件来创建桌面应用,而...
本示例中的"Android简单代码实现的计算器源码"提供了一个基础的计算器应用的实现,可以帮助初学者理解Android编程的基本原理,尤其是涉及到UI设计、事件处理和计算逻辑的部分。 首先,这个计算器应用的核心在于其...