java中运算符的解析和计算

package com.LBH;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

import com.singularsys.jep.Jep;
import com.singularsys.jep.bigdecimal.BigDecComponents;

public class JieXi {

    public static boolean getExpressionValue(String expression) {
        Jep jep = new Jep(new BigDecComponents());
        jep.addStandardConstants();
        Object result = null;
        try {
            jep.parse(expression);
            result = jep.evaluate();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return (Boolean) result;

    }

    public static Object getMathValue(String str) throws ScriptException{
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("js");
        engine.put("a", true);
        engine.put("b", false);
        engine.put("c", true);
        Object result = engine.eval(str);
        return result;
    }

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

        String str = "(a||b)&&c";
        System.out.println(str);
        Object result = getMathValue(str);
        System.out.println("关系运算符计算结果,类型:" + result.getClass().getName()
                + ",结果:" + result);
        System.out.println("******************\n数学运算符"
                + getExpressionValue("(1+3)&&(0+10)"));
    }
}

运算结果:

(a||b)&&c

关系运算符计算结果,类型:java.lang.Boolean,结果:true

******************

数学运算符true

参考:http://blog.sina.com.cn/s/blog_acdc06250101p5dh.html

时间: 2024-11-08 19:22:01

java中运算符的解析和计算的相关文章

转:在java中使用dom4j解析xml

在java中使用dom4j解析xml 虽然Java中已经有了Dom和Sax这两种标准解析方式 但其操作起来并不轻松,对于我这么一个初学者来说,其中部分代码是活生生的恶心 为此,伟大的第三方开发组开发出了Jdom和Dom4j等工具 鉴于目前的趋势,我们这里来讲讲Dom4j的基本用法,不涉及递归等复杂操作 Dom4j的用法很多,官网上的示例有那么点儿晦涩,这里就不写了 首先我们需要出创建一个xml文档,然后才能对其解析 xml文档: <?xml version="1.0" encod

JAVA中使用DOM解析XML文件

JAVA中使用DOM解析XML文件: 创建DocumentBuilderFactory的对象                                 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 创建DocumentBuilder对象 通过documentBuilder对象的parser方法加载xml文件到当前项目下 获取所有XML文件内节点的集合    getElementsByTagName()方

Java基础---Java中运算符优先级(十六)

Java中运算符的优先级 所谓优先级,就是在表达式中的运算顺序.Java 中常用的运算符的优先级如下表所示: 级别为 1 的优先级最高,级别 11 的优先级最低.譬如,x = 7 + 3 * 2  得到的结果是 13 "先乘后加"嘛! PS:大家没必要去死记运算符的优先级顺序,实际开发中,一般会使用小括号辅助进行优先级管理.例如: 分析:小括号优先级最高,因此 1. 执行 a + 18 ,结果为 30 2. 执行( a + 18 ) % 4 取模,结果为 2 3. 执行 a * ( (

java中运算符详解

前言 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.JAVA中常见的运算符有很多种,大致分为以下几种,常见的几种运算符如下图: 算术运算符 加.减.乘.除.求余.例++.--.%./.  赋值运算符 为变量或常量起到赋值作用的.例如=.+=.*= 关系运算符 判断数据大小的,结果为一个布尔值.例如>.>=.!=.== 逻辑运算符 进行逻辑运算,运算的成员为布尔值,结果也为布尔值.例如&&.||.!. 条件运算符 也称三目运算符,表达式为(a<b)?a:b

java中的HashMap解析

这篇文章准备从源码的角度带大家分析一下java中的hashMap的原理,在了解源码之前,我们先根据自己的理解创建一个hashMap. 先说明一下创建的具体原理是这样的,所谓hashMap,必然是用hash方法来区分不同的key值.学过hash的都知道,我们解决hash冲突的一种方法就是使用散列和桶,首先确定所在的桶号,然后在桶里面逐个查找.其实我们也可以单纯使用数组实现map,使用散列是为了获得更高的查询效率. 要写自己的hashmap前,必须说明一下两个方法,就是hashcode()和equa

慕课网-安卓工程师初养成-3-9 Java中运算符的优先级

来源 http://www.imooc.com/code/1315 所谓优先级,就是在表达式中的运算顺序.Java 中常用的运算符的优先级如下表所示: 级别为 1 的优先级最高,级别 11 的优先级最低.譬如,x = 7 + 3 * 2  得到的结果是 13 “先乘后加”嘛! PS:大家没必要去死记运算符的优先级顺序,实际开发中,一般会使用小括号辅助进行优先级管理.例如: 分析:小括号优先级最高,因此 1. 执行 a + 18 ,结果为 30 2. 执行( a + 18 ) % 4 取模,结果为

Java中构造和解析JSON

什么是 Json? JSON(JvaScript Object Notation)(官网网站:http://www.json.org/)是 一种轻量级的数据交换格式.  易于人阅读和编写.同时也易于机器解析和生成.它基于 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999 的一个子集.  JSON 采用完全独立于语言的文本格式,但是也使用了类似于 C 语言家族的习惯(包括C, C++, C#

java中采用dom4j解析xml文件

一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4j解析xml的具体操作. 二.代码详情    dom4j是一个第三方开发组开发出的插件,所以在我们使用dom4jf的时候我们要去下载一下dom4j对应版本的jar导入在我们项目中.  1)xml文件: <?xml version="1.0" encoding="UTF-8&

Java中volatile关键字解析

一.内存模型的相关概念 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入.由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度.因此在CPU里面就有了高速缓存. 也就是,当程序在运行过程中,会将运算需要的数据从主存复制一份到CPU的高