1.as解析字符串表达式,四则运算结果。
2.传入字符串表达式infix.如:“(2-8/4-7*2)/3“
3.返回计算后的结果,String类型。
private function evalString(infix:String):String{ var opArray:Array = new Array(); //栈底标记 opArray[0] = '@'; var op:Number = 1; var postfix:Array = new Array(); var post:Number = 0; //保存计算结果 var res:Number = 0; var i, j; var tempString:String = new String(); //计算两个数 function Caculate(opSign:String) { if (opSign == '+') { res = postfix[post-2]+postfix[post-1]; } else if (opSign == '-') { res = postfix[post-2]-postfix[post-1]; } else if (opSign == '*') { res = postfix[post-2]*postfix[post-1]; } else if (opSign == '/') { if (!postfix[post-1]) { trace("Expression Error!"); } else { res = postfix[post-2]/postfix[post-1]; } } postfix[post-1] = 0; postfix[post-2] = res; post--; } //扫描中缀表达式 for (i=0; i<infix.length; i++) { switch (infix.charAt(i)) { //左括号就直接入栈 case '(' : opArray[op] = infix.charAt(i); op++; break; //右括号则退栈计算,直到遇见一个左括号 case ')' : for (j=op-1; j>0; j--) { if (opArray[j] != '(') { Caculate(opArray[j]); opArray[j] = '#'; } else { opArray[j] = '#'; break; } } op = j; break; case '*' : case '/' : //如果栈顶的运算符为*或/,则先退栈,再入栈,否则直接入栈 if (opArray[op-1] == '*') { op--; Caculate(opArray[op]); opArray[op] = '#'; } else if (opArray[op-1] == '/') { op--; Caculate(opArray[op]); opArray[op] = '#'; } opArray[op] = infix.charAt(i); op++; break; case '+' : case '-' : //如果栈顶的运算符不是左括号也不是栈底,则先退栈计算,再入栈 if (opArray[op-1] != '(' && opArray[op-1] != '@') { op--; Caculate(opArray[op]); opArray[op] = '#'; } opArray[op] = infix.charAt(i); op++; break; default : //如果是数字字符或者小数点则转化为数字存入数组 //如果下一个字符是运算符则把当前数字存入数组 tempString += infix.charAt(i); var temp:String = new String(); temp = infix.charAt(i+1); if (temp != '.' && (temp>'9' || temp<'0')) { postfix[post] = parseFloat(tempString); post++; tempString = ""; } //trace(postfix); } } //扫描完成,全部退栈 for (j=op-1; j>0; j--) { if (opArray[j] != '@') { Caculate(opArray[j]); opArray[j] = '#'; } else { break; } } //返回结果 return postfix[0]; }
您还没有登录,请您登录后再发表评论
java中求字符串表达式的值看起来很伤脑筋,但如果你用BeanShell,一切都变得很简单。
JEP 可用于解析字符串数学表达式的类库 最新完整版(含jar) 可解析 诸如 "2+3*5" 这样的数学表达式
在程序设计中,可能碰到需要对字符串数学表达式求值的问题,常用的方法是解析表达式,生成二叉树,然后进行计算。编译器就是使用这种方法来解析程序中的表达式的。这种方法实现起来有点难度,需要考虑运算符的优先级...
四则运算解析器 解析字符串运算式 代码简单 新手福利
vs2008实现字符串表达式的解析并运算出结果
一个表达式字符串,例如“1+2*3”这样的表达式,C#中实现求取表达式的值。
自已写的一个数值字符表达式计算函数,只能简单的加减剩除及括号嵌套,可扩充特定字符代替字段等数值,比如可定义 PI等。
字符串表达式求值 输入类似1+2+3,6*5/7的字符串,计算出值
计算字符串表达式的值。 可以计算两种表达式:数值表达式和逻辑表达式 数值表达式中,可包含两个常数(e|pi),14个内部函数(abs|acos|asin|atan|ceiling|cos|exp|floor|log|log10|round|sin|sqrt|tan|min|max) 逻辑...
一个对字符串表达式解析并求值的算法,功能强大,可以处理变量,并支持所有的java数学函数。
实现+、-、*、/、%、<、>、=、、、>= 详细信息查看如下地址: http://blog.csdn.net/welliu/archive/2011/04/13/6320562.aspx
字符串表达式解释计算动态连接库.rar 非常有用的程序库,方便程序员整合到应用程序之中。 强大的字符串解释执行工具--DLL 当前版本:V1.0.3 免积分发给大家。。。
将近250行的算法 实现了通过字符串进行加减乘除四则运算 纯通过处理字符串和数组实现 希望能帮助大家: 例如:String input "33+26 77+70"; String result ""; try { result Account...
代码均为自己设计所写,分享一下。 字符串数学表达式(含括号)计算值 如: "31+3*3-20/2*5+40/8+4*5" ((2*(19-13*(1+2)/39)/6+4)-5)/5+((2+3)*2-5)
NULL 博文链接:https://xiaobai1023.iteye.com/blog/469689
输入一个运算字符串表达式,计算其值
这是一个运行于vs2015的项目,代码也就200+行,实现的功能有基础的四则运算以及math里面cos,sin,pow函数的,有这几个函数为样本添加其他函数也很简单,代码实现简单,中缀转后缀,只用了一个栈,附加提醒,若是使用...
将输入字符串转换成右值表示,然后计算结果返回
解析字符串换算为四则运算公式根据优先级进行数字运算
相关推荐
java中求字符串表达式的值看起来很伤脑筋,但如果你用BeanShell,一切都变得很简单。
JEP 可用于解析字符串数学表达式的类库 最新完整版(含jar) 可解析 诸如 "2+3*5" 这样的数学表达式
在程序设计中,可能碰到需要对字符串数学表达式求值的问题,常用的方法是解析表达式,生成二叉树,然后进行计算。编译器就是使用这种方法来解析程序中的表达式的。这种方法实现起来有点难度,需要考虑运算符的优先级...
四则运算解析器 解析字符串运算式 代码简单 新手福利
vs2008实现字符串表达式的解析并运算出结果
一个表达式字符串,例如“1+2*3”这样的表达式,C#中实现求取表达式的值。
自已写的一个数值字符表达式计算函数,只能简单的加减剩除及括号嵌套,可扩充特定字符代替字段等数值,比如可定义 PI等。
字符串表达式求值 输入类似1+2+3,6*5/7的字符串,计算出值
计算字符串表达式的值。 可以计算两种表达式:数值表达式和逻辑表达式 数值表达式中,可包含两个常数(e|pi),14个内部函数(abs|acos|asin|atan|ceiling|cos|exp|floor|log|log10|round|sin|sqrt|tan|min|max) 逻辑...
一个对字符串表达式解析并求值的算法,功能强大,可以处理变量,并支持所有的java数学函数。
实现+、-、*、/、%、<、>、=、、、>= 详细信息查看如下地址: http://blog.csdn.net/welliu/archive/2011/04/13/6320562.aspx
字符串表达式解释计算动态连接库.rar 非常有用的程序库,方便程序员整合到应用程序之中。 强大的字符串解释执行工具--DLL 当前版本:V1.0.3 免积分发给大家。。。
将近250行的算法 实现了通过字符串进行加减乘除四则运算 纯通过处理字符串和数组实现 希望能帮助大家: 例如:String input "33+26 77+70"; String result ""; try { result Account...
代码均为自己设计所写,分享一下。 字符串数学表达式(含括号)计算值 如: "31+3*3-20/2*5+40/8+4*5" ((2*(19-13*(1+2)/39)/6+4)-5)/5+((2+3)*2-5)
NULL 博文链接:https://xiaobai1023.iteye.com/blog/469689
输入一个运算字符串表达式,计算其值
这是一个运行于vs2015的项目,代码也就200+行,实现的功能有基础的四则运算以及math里面cos,sin,pow函数的,有这几个函数为样本添加其他函数也很简单,代码实现简单,中缀转后缀,只用了一个栈,附加提醒,若是使用...
将输入字符串转换成右值表示,然后计算结果返回
解析字符串换算为四则运算公式根据优先级进行数字运算