`

可以用来解析字符串表达式的包

阅读更多

 

import com.singularsys.jep.Jep;
  import com.singularsys.jep.JepException;
  public class SimpleExample
  { public static void main(String[] args) { Jep jep = new Jep(); //一个数学表达式
  String exp = "((a+b)*(c+b))/(c+a)/b"; //给变量赋值
  jep.addVariable("a", 10);
  jep.addVariable("b", 10);
  jep.addVariable("c", 10);
  try { //执行
  jep.parse(exp);
  Object result = jep.evaluate();
  System.out.println("计算结果: " + result); }
  catch (JepException e)
  {
  System.out.println("An error occured: " + e.getMessage());
  }
  }
  }

 package com.eric.test;

import org.nfunk.jep.JEP;

public class SimpleExample {
	public static void main(String[] args) {
		JEP jep = new JEP(); // 一个数学表达式
		String exp = "((a+b)*(c+b))/(c+a)/b"; // 给变量赋值
		jep.addVariable("a", 10);
		jep.addVariable("b", 10);
		jep.addVariable("c", 10);
		jep.parseExpression(exp);
		Object result = jep.getValueAsObject();
		System.out.println("计算结果: " + result);
	}

}

 package com.eric.test;

import org.nfunk.jep.JEP;

public class Test {
	public static void main(String[] args) {
		JEP myPrase=new JEP();

		myPrase.parseExpression("5+1+6");

		double a=myPrase.getValue();

		System.out.println(a);
		
		myPrase.parseExpression("1000<10002&&1001>1000");
		//System.out.println((Boolean)myPrase.getValueAsObject());
		System.out.println(myPrase.getValue());
	}

}


package com.eric.test;

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

public class ScriptTest {
	private ScriptEngine se;

	public ScriptTest() {
		ScriptEngineManager sem = new ScriptEngineManager();		
		se = sem.getEngineByExtension("js");
	}

	public Object cal(String expression) {
		Object result = null;
		try {
			result = se.eval(expression);
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("Error occured");
		}
		return result;
	}

	public static void main(String[] args) {
		ScriptTest app = new ScriptTest();
		String[] s = { "1+1", "(1-2)*4", "3*(2+4)/27" };
		for (int i = 0; i < s.length; i++) {
			Object r = app.cal(s[i]);
			System.out.println(s[i] + " = " + r);
		}
	}
}
 
分享到:
评论

相关推荐

    Java实现计算字符串表达式

    这篇博客“Java实现计算字符串表达式”可能讲解了如何利用Java来处理这种问题,虽然具体的实现细节没有提供,但我们可以基于一般的方法和常用的库来探讨这个主题。 首先,计算字符串表达式的基本步骤通常包括以下几...

    解析字符串,按照运算表达式来计算出最终结果值.rar

    在解析字符串表达式时,需要理解这些运算符的语义和优先级规则。 4. **表达式树(Expression Trees)**: - C# 提供了 `System.Linq.Expressions` 命名空间,其中的表达式树类可以用来表示C#的lambda表达式。...

    把字符串转化为表达式

    现在,我们可以使用`Eval`方法来处理字符串表达式了。例如,如果有一个字符串`"2 + 3 * 4"`,我们可以这样计算它的结果: ```csharp string expression = "2 + 3 * 4"; double result = double.Parse(scriptEngine....

    Java 正则表达式判断字符串是否包含中文

    2. **`Matcher` 类**:用于执行匹配操作,可以用来查找字符串中的匹配项。 3. **`PatternSyntaxException` 类**:当提供的正则表达式格式错误时,编译阶段会抛出该异常。 #### 四、示例代码解析 根据给定的部分...

    delphi 教你如何做表达式解析器

    表达式解析器是用来读取、分析和解释数学或逻辑表达式的程序,它可以将输入的字符串(如“2 + 3 * (4 - 1)”)转化为计算机可以理解的形式,以便进行计算。在这个过程中,词法分析和语法分析是两个核心步骤。 词法...

    C#表达式计算器源码

    一个表达式计算器可以接收包含运算符、数字和括号的字符串,然后解析这个字符串并执行相应的计算。在C#中,这通常涉及到以下几个关键步骤: 1. **解析表达式**:这是表达式计算器的第一步,需要将输入的字符串分解...

    java字符串处理取出括号内的字符串

    本篇文章将深入探讨如何从字符串中提取括号内的内容,主要关注于基础的字符串操作、正则表达式以及如何利用这些工具来实现目标。 首先,我们要明白Java中的字符串是`String`类的对象,它提供了丰富的API用于字符串...

    Android字符串运算的计算器

    4. **栈操作**:在处理字符串表达式时,栈是一个关键的数据结构。当遇到数字时,我们将其压入栈;遇到操作符时,我们将栈顶的两个元素弹出进行运算,并将结果压回栈。对于具有不同优先级的操作符,我们需要维护多个...

    VB_NET字符串和正则表达式参考手册

    例如,`Match`和`Matches`方法可以查找符合模式的字符串,`Replace`方法可以进行模式替换,`IsMatch`方法则用来判断一个字符串是否匹配某个正则模式。正则表达式的语法丰富,包括字符集、量词、分组、反向引用等,...

    C#字符串计算公式处理

    接下来,我们需要解析字符串公式,将其转换为可计算的元素。这通常涉及到以下步骤: 1. **分词**:使用`Split`方法按运算符(如"+","-"等)拆分字符串,得到包含数字和变量的字符串数组。 2. **变量解析**:识别出...

    work2_分割字符串_字符串处理_

    例如,`strcat()` 和 `strncat()` 可以用来连接两个或多个字符串,`strstr()` 可以查找子字符串在主字符串中的位置,`strchr()` 和 `strrchr()` 则分别用于查找字符在字符串中的首次出现和最后一次出现。 此外,...

    C#中字符串转换为计算公式-并进行计算的方法(自定义公式的计算)

    2. **Eval() 方法**:这是一个强大的方法,可以用来执行字符串中的脚本代码并返回结果。对于简单的数学运算,这个方法非常有用。 #### 二、环境搭建与配置 1. **创建项目**: - 打开Visual Studio 2008,创建一个...

    字符串正则表达式PPT

    `StringTokenizer`类用于分隔字符串,根据特定分隔符将字符串拆分为多个部分,常用于简单的文本解析。 现在我们转向正则表达式。正则表达式(Regular Expression)是一种强大的文本匹配模式,用于查找、替换或提取...

    js将字符串转成正则表达式的实现方法

    虽然不推荐,但`eval()`函数确实也可以用来将字符串转换为正则表达式。`eval()`会执行一个字符串作为JavaScript代码。在上述示例中,`eval(str)`会将`"/abc/g"`字符串解析为正则表达式: ```javascript var str =...

    一个php截取指定字符串之间的字符串的类

    这个方法可能用于确保边界字符串适合正则表达式。 5. `trim()`:在截取子串后,可能需要去除首尾的空白字符或特定字符,`trim()`方法可以为此提供便利。 6. `validateBorders()`:在处理边界字符串时,确保它们都...

    字符串专题文档

    5. **格式化输出**:`printf()`或`format()`方法可以用来格式化输出字符串,如控制数字精度、插入变量等。 6. **字符串比较**:使用`equals()`或`compareTo()`方法进行字符串内容的比较,注意区分字面量和引用的比较...

    javaCC_字符串解析的强大工具

    它基于LL(k)解析算法,并且支持自定义语法规则,使得开发者可以方便地解析符合特定规则的输入字符串。在JavaCC的帮助下,程序员可以快速编写出高效、可维护的解析代码,而无需从头实现复杂的解析算法。 JavaCC的...

    delphi正则表达式解析器

    在Delphi编程环境中,正则表达式是一种强大的文本处理工具,可以用来进行复杂的字符串匹配、搜索、替换等操作。 正则表达式,简称regex,是一种模式匹配语言,用于在字符串中查找特定的模式。它们广泛应用于数据...

Global site tag (gtag.js) - Google Analytics