小编典典

您可以看到如何传递所有参数:

ScriptEngineManager manager = new ScriptEngineManager();

ScriptEngine engine = manager.getEngineByName("JavaScript");

engine.put("artist", artist);

...

您将使用读取回值

ScriptEngine.get(...)

粘合的最后一点是用函数声明包围用户的表达式,并编写一个调用函数并将结果分配给众所周知的变量的表达式。

因此,开始实验,让我们有一个功能来测试表达式:

private static void printResult(final ScriptEngine jsEngine, String name, String expr) throws ScriptException {

Object result = jsEngine.eval(expr);

System.out.println(name + " result: " + result + "; expr: " + expr);

}

现在让我们称之为:

public static void main(String[] args) throws Exception {

ScriptEngineManager sem = new ScriptEngineManager();

ScriptEngine jsEngine = sem.getEngineByName("JavaScript");

printResult(jsEngine, "Hello World", "'Hello World'");

printResult(jsEngine, "Simple Math", "123 + 456");

}

这将产生:

Hello World result: Hello World; expr: 'Hello World'

Simple Math result: 579.0; expr: 123 + 456

现在让我们尝试一下您的用例:

public static void main(String[] args) throws Exception {

ScriptEngineManager sem = new ScriptEngineManager();

ScriptEngine jsEngine = sem.getEngineByName("JavaScript");

String expr = "artist + '-' + album + (disktotal > 1 ? ('-D' + diskno) : '')";

jsEngine.put("artist", "U2");

jsEngine.put("album", "The Joshua Tree");

jsEngine.put("disktotal", 1);

jsEngine.put("diskno", 1);

printResult(jsEngine, "Single Disk", expr);

jsEngine.put("artist", "Tori Amos");

jsEngine.put("album", "To Venus and Back");

jsEngine.put("disktotal", 2);

jsEngine.put("diskno", 2);

printResult(jsEngine, "Muti-Disk", expr);

}

产生结果:

Single Disk result: U2-The Joshua Tree; expr: ...

Muti-Disk result: Tori Amos-To Venus and Back-D2; expr: ...

请注意,托里(Tori)的末尾是“ D2”。

2020-09-28

java语言编写简易表达式_将简单的表达语言放入Java相关推荐

  1. java sql编写教务系统_校园车辆管理系统的设计与实现 java+SqlServer

    一. 论文(设计)的主要内容 本设计为校园车辆管理系统.该系统具备对临时车辆进行管理和对长期用户进行认证管理的功能,所有车辆可以使用车牌号码作为出入校的凭证.整套系统由以下模块构成,如图一所示: 图1 ...

  2. Java多线程编写简易飞机大战(一)

    ** Java多线程编写简易飞机大战(一) ** 利用多线程编写飞机大战,主要有3个关键: ①继承Thread类,重写run方法: ②线程工作代码在run方法中写: ③启动时,调用线程对象的start ...

  3. 用C语言编写一个Linux下的简单shell程序

    这是一个简单的C程序,展示了如何进行系统调用执行logout cd ls pwd pid rm mkdir mv cp等命令,这是一个简单的命令解释程序shell,其源代码如下: #include & ...

  4. C语言编写扫雷游戏,超简单

    C语言编写扫雷游戏,超简单 1.扫雷游戏的流程 2.代码编写 3.总结 通过学习C语言的基础知识,基本上是理解了大部分内容,现在就通过所学的知识,写个简单的扫雷游戏,加深对基础知识的理解,正所谓实践是 ...

  5. antlr idea 入门_ANTLR入门:构建简单的表达语言

    antlr idea 入门 这是该系列的第一篇文章. 本系列的目的是描述如何创建有用的语言和所有支持工具. 在本文中,我们将开始研究一种非常简单的表达语言. 我们将在语言沙箱中构建它,因此我们将其称为 ...

  6. ANTLR入门:构建一种简单的表达语言

    这是该系列的第一篇文章. 本系列的目的是描述如何创建有用的语言和所有支持工具. 在本文中,我们将开始研究一种非常简单的表达语言. 我们将在语言沙箱中构建它,因此我们将其称为语言Sandy . 我认为工 ...

  7. 新手学java还是python知乎_编程初学者应该先学C++、Java还是Python?

    最近,看到这样的一个话题:"打算自学编程,但是不知道该先学哪门语言入门?编程初学者应该先学C++.Java还是Python?",作为一个新手,应该学什么语言入门比较好呢?相信这是困 ...

  8. ZeptoN正在将程序放入Java

    1.简介 Java编程语言或" Java"于1995年引入.然而,在近25年的时间里,它增加了最初不是核心语言所具有的功能. 此类功能包括枚举,泛型,对基本C样式功能开关语句的许多 ...

  9. java中的el表达式_简单介绍Java中的EL表达式(图)

    EL全名为Expression Language,这篇文章主要给大家介绍EL表达式的主要作用及内容简介,感兴趣的朋友一起看看 JSP页面中支持使用EL表达式,EL全名为Expression Langu ...

最新文章

  1. Vmware Vcenter 5.1 部署安装过程 part 4 vmware vcenter 安装步骤
  2. JMS学习八(ActiveMQ消息持久化)
  3. java 把文件转化为字节数组
  4. 16.对极几何——极线约束,收敛相机,平行图像平面,两个立体对 测验_2
  5. c语言调用子程序,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...
  6. [数据结构与算法] : 栈的链式实现
  7. 给新手开店选品的建议
  8. (转)内存整理的原理 整理自CSDN
  9. zuc算法代码详解_ZUC算法了解
  10. 用JSON-server模拟REST API
  11. html中header怎么设置,HTML中的header标签怎么用?
  12. VMware9 绿色破解版 下载地址
  13. 用python证明给定范围的欧拉常数
  14. 高级转录组分析和R数据可视化火热报名中(2022.10)
  15. java求两个非零正整数的最大公约数和最小公倍数
  16. HTML——3D移动、3D透视、3D效果、3D呈现案例效果
  17. SQL对时间的操作,比如在当前时间上增加减少一天,在当前的时间上增加减少一个月
  18. vs用html制作表格,演练:在 Visual Web Developer 中编辑 HTML 表格
  19. ASP.NET MVC 音乐商店 - 目录
  20. 网易考拉规则引擎平台架构

热门文章

  1. java构造方法的书写和注意事项(入门可看)
  2. C++中的静态绑定与动态绑定
  3. linux查看网络带宽_每天一个Linux命令之~wget命令
  4. ResNet、Faster RCNN、Mask RCNN是专利算法吗?盘点何恺明参与发明的专利
  5. 还原时代原声,AI修复老北京再次火爆全网
  6. linux 如何切换jdk的版本
  7. wangEditor 上传文件
  8. javaWeb引入相关的jar
  9. int main(int argc,char *argv[]),主函数的参数问题
  10. 脚本控制向Android模拟拨打电话,发送短信,定位设置功能