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来处理这种问题,虽然具体的实现细节没有提供,但我们可以基于一般的方法和常用的库来探讨这个主题。 首先,计算字符串表达式的基本步骤通常包括以下几...
在解析字符串表达式时,需要理解这些运算符的语义和优先级规则。 4. **表达式树(Expression Trees)**: - C# 提供了 `System.Linq.Expressions` 命名空间,其中的表达式树类可以用来表示C#的lambda表达式。...
现在,我们可以使用`Eval`方法来处理字符串表达式了。例如,如果有一个字符串`"2 + 3 * 4"`,我们可以这样计算它的结果: ```csharp string expression = "2 + 3 * 4"; double result = double.Parse(scriptEngine....
2. **`Matcher` 类**:用于执行匹配操作,可以用来查找字符串中的匹配项。 3. **`PatternSyntaxException` 类**:当提供的正则表达式格式错误时,编译阶段会抛出该异常。 #### 四、示例代码解析 根据给定的部分...
表达式解析器是用来读取、分析和解释数学或逻辑表达式的程序,它可以将输入的字符串(如“2 + 3 * (4 - 1)”)转化为计算机可以理解的形式,以便进行计算。在这个过程中,词法分析和语法分析是两个核心步骤。 词法...
一个表达式计算器可以接收包含运算符、数字和括号的字符串,然后解析这个字符串并执行相应的计算。在C#中,这通常涉及到以下几个关键步骤: 1. **解析表达式**:这是表达式计算器的第一步,需要将输入的字符串分解...
本篇文章将深入探讨如何从字符串中提取括号内的内容,主要关注于基础的字符串操作、正则表达式以及如何利用这些工具来实现目标。 首先,我们要明白Java中的字符串是`String`类的对象,它提供了丰富的API用于字符串...
4. **栈操作**:在处理字符串表达式时,栈是一个关键的数据结构。当遇到数字时,我们将其压入栈;遇到操作符时,我们将栈顶的两个元素弹出进行运算,并将结果压回栈。对于具有不同优先级的操作符,我们需要维护多个...
例如,`Match`和`Matches`方法可以查找符合模式的字符串,`Replace`方法可以进行模式替换,`IsMatch`方法则用来判断一个字符串是否匹配某个正则模式。正则表达式的语法丰富,包括字符集、量词、分组、反向引用等,...
接下来,我们需要解析字符串公式,将其转换为可计算的元素。这通常涉及到以下步骤: 1. **分词**:使用`Split`方法按运算符(如"+","-"等)拆分字符串,得到包含数字和变量的字符串数组。 2. **变量解析**:识别出...
例如,`strcat()` 和 `strncat()` 可以用来连接两个或多个字符串,`strstr()` 可以查找子字符串在主字符串中的位置,`strchr()` 和 `strrchr()` 则分别用于查找字符在字符串中的首次出现和最后一次出现。 此外,...
2. **Eval() 方法**:这是一个强大的方法,可以用来执行字符串中的脚本代码并返回结果。对于简单的数学运算,这个方法非常有用。 #### 二、环境搭建与配置 1. **创建项目**: - 打开Visual Studio 2008,创建一个...
`StringTokenizer`类用于分隔字符串,根据特定分隔符将字符串拆分为多个部分,常用于简单的文本解析。 现在我们转向正则表达式。正则表达式(Regular Expression)是一种强大的文本匹配模式,用于查找、替换或提取...
虽然不推荐,但`eval()`函数确实也可以用来将字符串转换为正则表达式。`eval()`会执行一个字符串作为JavaScript代码。在上述示例中,`eval(str)`会将`"/abc/g"`字符串解析为正则表达式: ```javascript var str =...
这个方法可能用于确保边界字符串适合正则表达式。 5. `trim()`:在截取子串后,可能需要去除首尾的空白字符或特定字符,`trim()`方法可以为此提供便利。 6. `validateBorders()`:在处理边界字符串时,确保它们都...
5. **格式化输出**:`printf()`或`format()`方法可以用来格式化输出字符串,如控制数字精度、插入变量等。 6. **字符串比较**:使用`equals()`或`compareTo()`方法进行字符串内容的比较,注意区分字面量和引用的比较...
它基于LL(k)解析算法,并且支持自定义语法规则,使得开发者可以方便地解析符合特定规则的输入字符串。在JavaCC的帮助下,程序员可以快速编写出高效、可维护的解析代码,而无需从头实现复杂的解析算法。 JavaCC的...
在Delphi编程环境中,正则表达式是一种强大的文本处理工具,可以用来进行复杂的字符串匹配、搜索、替换等操作。 正则表达式,简称regex,是一种模式匹配语言,用于在字符串中查找特定的模式。它们广泛应用于数据...