Java中有没有类似于eval()的函数?目的是计算一个字符串类型的数学表达式的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中有没有类似于eval()的函数?目的是计算一个字符串类型的数学表达式的值相关的知识,希望对你有一定的参考价值。
比如计算下面字符串数学表达式的值
String str = "1+2*(3+6)-5/2";
有啊,脚本引擎
public class Testpublic 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对象有以下特征:
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()的函数?目的是计算一个字符串类型的数学表达式的值的主要内容,如果未能解决你的问题,请参考以下文章
python内置函数通过字符串的方式来执行函数代码块,类似java的反射机制相当强大!