`

利用java 6.0的脚本引擎执行字符串表达式运算

    博客分类:
  • Java
 
阅读更多

例子都在这里了:http://www.java2s.com/Code/Java/JDK-6/Script-Engines.htm,以下是个小测试:

package com.spell.script.engine;

import java.util.List;

import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class ScriptsTest {

    public static void main(String[] args) throws ScriptException {
        ScriptsTest.list();
        ScriptsTest.runScript("(1+2+3)*2/0.5");
        ScriptsTest.runScript("print ('not a math script')");
        ScriptsTest.valueBind();

    }

    public static void list() {
        // create ScriptEngineManager
        ScriptEngineManager manager = new ScriptEngineManager();
        List<ScriptEngineFactory> factoryList = manager.getEngineFactories();
        for (ScriptEngineFactory factory : factoryList) {
            System.out.println(factory.getEngineName());
            System.out.println(factory.getEngineVersion());
            System.out.println(factory.getLanguageName());
            System.out.println(factory.getLanguageVersion());
            System.out.println(factory.getExtensions());
            System.out.println(factory.getMimeTypes());
            System.out.println(factory.getNames());
        }
    }

    public static void runScript(String script) {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("js");
        try {
            System.out.println(engine.eval(script));
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }

    public static void valueBind() throws ScriptException {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("js");
        engine.put("a", 1);
        engine.put("b", 5);

        Bindings bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
        Object a = bindings.get("a");
        Object b = bindings.get("b");
        System.out.println("a = " + a);
        System.out.println("b = " + b);
        Object result = engine.eval("c = a + b;");
        System.out.println("a + b = " + result);
    }
}

 

原文:http://hi.baidu.com/ecspell/item/8731e0df10a5a7e4785daaae

 

分享到:
评论

相关推荐

    VC6.0 MFC制作的计算器

    计算过程中可能需要用到字符串操作来处理用户输入的表达式,以及C++的基本数学运算符。 项目中可能包含以下关键文件: 1. CalculatorDlg.cpp:对话框类的实现文件,包含按钮事件处理函数。 2. CalculatorDlg.h:...

    2021-2022计算机二级等级考试试题及答案No.913.docx

    4. **Java字符串操作**:在Java中,字符串是不可变的。因此,`s.length()`会返回字符串的长度,是合法的;而`s = s + 100;`是合法的字符串连接操作;`s += "books";`也是合法的;但`int len = s.length;`是非法的,...

    2021-2022计算机二级等级考试试题及答案No.502.docx

    2. VisualBasic6.0字符串截取:在VB6中,LEFT函数用于从字符串的左侧开始截取指定长度的字符。 3. 电子邮件地址结构:电子邮件地址由两部分组成,用户名@域名,其中@号前是用户名。 4. 客户端运行的语言:...

    VC++编写的图形界面可编程计算器

    这通常涉及到字符串处理和算法设计。开发者可能采用了栈数据结构来实现逆波兰表示法(RPN)或直接对表达式进行语法分析,转换成抽象语法树(AST)进行计算。对于复杂的表达式,如括号嵌套、优先级处理等,都需要严谨...

    2021-2022计算机二级等级考试试题及答案No.4569.docx

    主要涉及Excel函数、网页字符编码、报表设计、JavaScript编程、数据库操作、算法分析、HTML标签、Access字段属性、脚本语言、C++编程、数据库模型、关系运算、C++结构体、程序执行流程、VFP数据类型、数组初始化以及...

    2021-2022计算机二级等级考试试题及答案No.535.docx

    at("fox", "VisualFoxpro6.0")** 可以用来查找一个字符串在另一个字符串中的位置;**D. month({^2002-09-11})** 可以用来获取日期的月份部分。而 **C. chr(13)** 是用来获取 ASCII 码为 13 的字符,结果不是数值...

    2021-2022计算机二级等级考试试题及答案No.11106.docx

    9. 表达式返回结果:AT函数查找子字符串位置,`AT(″A″, ″BCD″)`返回.F.表示未找到,选项A错误;`″[ 信息 ] ″$″ ″管理信息系统`表示字符串连接,结果不为空,选项B错误;`ISNULL(.NULL.)`检查是否为空值,...

    2021-2022计算机二级等级考试试题及答案No.16024.docx

    - **解释**: 在字符串比较中,需要确保字符串的长度和内容都完全一致才能认为它们相等。“等级考试”与“等级”的比较不考虑空格,因此A选项正确。 #### 13. 算法的特性 - **知识点**: 算法的基本特征。 - **解释*...

    2021-2022计算机二级等级考试试题及答案No.13764.docx

    9. 字符串比较:在VBScript或其他类似的脚本语言中,"$"符号用于字符串连接,表达式`"BC"$"CBAABC"`表示"BC"连接"CBAABC",结果为真,因为它们能拼接成一个完整的字符串。 10. 容器:在GUI编程中,容器是能够包含...

    信息技术类江淮十校第十次联考试卷及答案

    11. **字符串格式化**:`print(f"abc{3+6/2}")`会将表达式的结果插入到字符串中,输出`abc6.0`,C选项正确。 12. **列表操作**:`random.choice()`可以从列表中随机选取一个元素,C选项正确。 13. **形参与实参**...

    2021-2022计算机二级等级考试试题及答案No.10325.docx

    Java 中的字符串比较 **题目描述:** 关于以下程序段,正确的说法是() 1. String s1 = "abc" + "def"; 2. String s2 = new String(s1); 3. if (s1 == s2) 4. System.out.println("== succeeded"); 5. if (s1....

    2021-2022计算机二级等级考试试题及答案No.19866.docx

    8. **字符串操作**:`indexOf()`方法找不到子字符串时,返回-1。 9. **Word功能**:在Word2003中,插入页码的命令位于“插入”菜单。 10. **标识符规则**:在许多编程语言中,标识符不能以数字开头,因此12AC是不...

    2021-2022计算机二级等级考试试题及答案No.4335.docx

    12. `Len`函数:在VBScript或其他类似脚本语言中,`Len`函数用于计算字符串的长度,`Str(Val("123.4"))`将数字转换为字符串,其长度为6。 13. 数据表关联:在数据库中,一对多关系表示一个表中的记录可以与另一个表...

    javaSE代码实例

    13.6.3 利用正则式对字符串进行分析 268 13.7 小结 269 第14章 集合框架——强大的对象管理器 270 14.1 Object类——所有类的超类 270 14.1.1 toString方法的重写 270 14.1.2 equals方法的意义 271 ...

    2021-2022计算机二级等级考试试题及答案No.11448.docx

    3. **VB表达式**:在 VB6.0 中,使用 LEFT 函数可以截取字符串的一部分,例如 `LEFT("Visual Basic 6.0",6)` 将返回 "Visual"。 4. **三操作数运算符**:在提供的选项中,三操作数运算符是 `?`,常用于条件运算。 ...

    VFP简单初级入门教程_超好

    - **函数**: 函数是用来完成特定计算任务的一组指令集合,例如数学运算、字符串处理等。 - **表达式**: 表达式是组合变量、常量、函数调用和其他操作符的组合,用于计算结果。 **3.2 示例说明** - **命令示例**: `...

    2021-2022计算机二级等级考试试题及答案No.18949.docx

    - **知识点概述**:在计算机内部,字符串通常是作为一个字符序列(即一维数组)来存储的。每个字符占据一定的存储空间,通常为一个字节。 ### 11. Word 表格操作 - **知识点概述**:在Microsoft Word中,可以通过...

    splunk api手册

    - **strcat**:字符串连接,将多个字符串合并为一个。 - **streamstats**:流统计,按流进行统计。 - **table**:表格命令,以表格形式展示数据。 - **tags**:标签命令,为事件添加标签。 - **tail**:尾部选择,...

    2021-2022计算机二级等级考试试题及答案No.10305.docx

    - 空串: 表示一个空的字符串。 - 数值 0: 表示零。 - 无值: 表示未知或未指定的值。 - FALSE: 逻辑假。 **正确答案**: C (无值) --- #### 9. Access 中的字段显示控件类型 - **知识点**: 在 Microsoft Access...

Global site tag (gtag.js) - Google Analytics