在java代码中执行js脚本,实现计算出字符串“(1+2)*(1+3)”的结果
一、先看几张图



二、来写个demo
package com.zxy.test;
import java.util.HashMap;
import java.util.Map;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import org.junit.Test;
/**
* 如何将一个字符串公式,计算出结果
* @author ZENG.XIAO.YAN
* @date Oct 26, 2017 7:34:08 PM
* @version V1.0
*/
public class RunJsOnJava {
@Test
public void test01() throws ScriptException {
String formula = "(a+b)*(a-b)";
HashMap<String,Object> map = new HashMap<String,Object>();
map.put("a", 20.1);
map.put("b", 11.1);
Double result = (Double) this.calculateResultByFormula(formula, map);
System.out.println(result); //280.80000000000007
}
/**
* 通过字符串公式,和参数,计算出结果
* @param formula
* @param paramMap
* @return
* @throws ScriptException
*/
public Object calculateResultByFormula (String formula,Map<String,Object> paramMap) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine scriptEngine = manager.getEngineByName("js");
for (String key : paramMap.keySet()) {
formula = formula.replaceAll(key, paramMap.get(key).toString());
}
//此时 formula="(20.1+11.1)*(20.1-11.1)"
Object result = scriptEngine.eval(formula); // 运行js脚本
return result;
}
}
package com.zxy.test;
import java.util.HashMap;
import java.util.Map;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import org.junit.Test;
/**
* 如何将一个字符串公式,计算出结果
* @author ZENG.XIAO.YAN
* @date Oct 26, 2017 7:34:08 PM
* @version V1.0
*/
public class RunJsOnJava {
@Test
public void test01() throws ScriptException {
String formula = "(a+b)*(a-b)";
HashMap<String,Object> map = new HashMap<String,Object>();
map.put("a", 20.1);
map.put("b", 11.1);
Double result = (Double) this.calculateResultByFormula(formula, map);
System.out.println(result); //280.80000000000007
}
/**
* 通过字符串公式,和参数,计算出结果
* @param formula
* @param paramMap
* @return
* @throws ScriptException
*/
public Object calculateResultByFormula (String formula,Map<String,Object> paramMap) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine scriptEngine = manager.getEngineByName("js");
for (String key : paramMap.keySet()) {
formula = formula.replaceAll(key, paramMap.get(key).toString());
}
//此时 formula="(20.1+11.1)*(20.1-11.1)"
Object result = scriptEngine.eval(formula); // 运行js脚本
return result;
}
}
三、小结
在java代码中执行js脚本,实现计算出字符串“(1+2)*(1+3)”的结果的更多相关文章
- Java8中执行js脚本
代码中除了callJSFunctionFromFile函数,其他均转载于文章JDK1.8中如何用ScriptEngine动态执行JS import jdk.nashorn.api.scripting. ...
- 自动化测试中执行JS脚本方法封装
执行JS脚本方法封装: class JavaScript(Base): def execute_javascript(self, js): """执行 JavaScrip ...
- java中执行JS脚本
package 测试包; import javax.script.*; public class SSSSSSSSS { public SSSSSSSSS() { // TODO Auto-gener ...
- Java代码中执行Linux命令,亲测可用
前提需要知道怎么在linux怎么新建java文件和怎么编译,否则请先学其他知识!! import java.io.*;public class Test{ public static void mai ...
- java util - 在java代码中执行javascript代码工具 rhino-1.7.7.jar
需要 rhino-1.7.7.jar 包 代码示例: package cn.java.mozilla.javascript; import org.mozilla.javascript.Context ...
- Java通过ScriptEngine 执行js脚本案例
public static void main(String[] args) throws ScriptException, FileNotFoundException, NoSuchMethodEx ...
- java代码中执行liunx命令
public static String runShell(String command){ try{ String[] commands = isLinux()?new String[]{" ...
- 在.Net中执行js
在.Net中执行js 利用Noesis.Javascript开源组件可以做到在.net中执行js脚本,同时js脚本也能调用C#函数.这个组件的获得方式:在NuGet中输入搜索"Noesis& ...
- java中执行js代码
要在java中执行js代码,首先明白,java不支持浏览器本身的方法.支持自定义的js方法,否则会报错 先新建一个js文件:jsss.js 内容如下: function aa(a,b){ return ...
随机推荐
- Linux awk命令常见使用方法介绍
Linux awk命令常见使用方法介绍 By:授客 QQ:1033553122 awk运行方式有三种,其中常用的为命令行方式 awk [-F field_separator] '{patter ...
- 常用的第三方模块 psutil url
psutil 用Python来编写脚本简化日常的运维工作是Python的一个重要用途.在Linux下,有许多系统命令可以让我们时刻监控系统运行的状态,如ps,top,free等等.要获取这些系统信息, ...
- Expo大作战(三)--针对已经开发过react native项目开发人员有针对性的介绍了expo,expo的局限性,开发时项目选型注意点等
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- MAYA逼真手枪制作视频教程 中文字幕
下载地址 更多中文字幕教程请关注微镜映画网,有各类CG教程提供
- LeetCode题解之 Implement strStr()
1.题目描述 2.题目分析 字符串操作,注意边界条件即可. 3.代码 int strStr(string haystack, string needle) { int n = needle.size( ...
- ionic插件安装与卸载
使用下面的命令查询.安装.卸载插件: $ ionic plugin list //列出所有已安装插件 $ ionic plugin remove 插件名 //先根据上面的list列出插件,然后根据插件 ...
- 03-04_配置并启动Managed Server(受管服务器)
本文重点: 配置Managed Servers(受管服务器) 启动Managed Servers 原理 运行多个Managed Servers实例 一.配置Managed Se ...
- 搞定pycharm专业版的安装
学习python也有一段时间了,装了python2,也装了python3.对于IDE当然首选了人人拍掌叫好的pycharm.其实作为小白,一开始的时候并不知道什么是IDE,什么是pychram,以为装 ...
- linux安装mydumper软件包以及报错解决
今天使用mydumper命令从AWS上的RDS集群MYSQL数据库导出数据,发现Tidb官方提供的工具不太适合,所以就自己编译了一个来尝试一下,居然成功了. 首先我的系统是Centos7,并且已经安装 ...
- .NET Core 使用 EF 出错的解决方法
在.NET Core 项目钟(类库),使用Entity Framework,建立模型生成数据库时,失败 Could not load assembly 'xxx'. Ensure it is refe ...