Java中有没有类似于eval()的函数?目的是计算一个字符串类型的数学表达式的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中有没有类似于eval()的函数?目的是计算一个字符串类型的数学表达式的值相关的知识,希望对你有一定的参考价值。

比如计算下面字符串数学表达式的值
String str = "1+2*(3+6)-5/2";

有啊,脚本引擎

public class Test 
public static void main(String[] args) throws ScriptException 
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine se = manager.getEngineByName("js");
String str = "1+2*(3+6)-5/2";
Double result =(Double) se.eval(str);
System.out.println(result);

参考技术A OgnlContext oc = new OgnlContext();
Object object = Ognl.getValue("1+2*(3+6)-5/2", oc, oc.getRoot());
System.out.println(object.toString());
参考技术B 记得 好像 哪本书中 写过这样的问题,但是没有现成的函数 让你 使用 , 是自己 java代码 解析字符串

JQuery

一:JavaScript中错误的Error对象:

类似于java的错误基类Exception,javascript有个基类Error,Error对象有以下特征:

pname –表示错误类型的字符串
pmessage – 实际的错误信息

Error对象的名称对应于它的类,可以是以下值之一

1、EvalError: 错误发生在eval()函数中

2、RangeError:数字的值超过javascript可表示的范围

3、ReferenceError: 使用了非法的引用

4、SyntaxError: 在eval()函数调用中发生了语法错误。

5、TypeError:变量的类型不是预期所需的

6、URIError: 在encodeURI()或者decodeURI()函数中发生的错误

说明:Mozzilla和IE均扩展了Error对象,如IE中提供了一个number特性来表示错误代号,也可用description代替message

 

引入throw语句,用于有目的的抛出异常

语法如下:throw error_object

error_object可以是字符串、数字、布尔值或是实际的对象。如:

throw  “an error occurred”;

throw 5007;

throw true;

throw new Object();

throw new Error();

throw new Error(“error”);

throw new Error(10001,”error”);

其他Error子类也可以使用

如:

throw new SytaxError(“语法错误”);

throw new TypeError(“数据类型有误”);

throw new EvalError(“Eval类型错误”);

自定义异常的简单实例:

 

以上是关于Java中有没有类似于eval()的函数?目的是计算一个字符串类型的数学表达式的值的主要内容,如果未能解决你的问题,请参考以下文章

PHP eval函数

python内置函数通过字符串的方式来执行函数代码块,类似java的反射机制相当强大!

Matlab repr 函数

JQuery

java中有没有方法类似于js中的encodeURIComponent函数,对字符串中的特殊字符进行转义的?

Python函数中eval函数知识点