java怎样计算一个String类型的数学表达式? java怎样计算一个String类型的数学表达式?比如(3+5)*20/5^8-90. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 想偷懒吗? 组合成SQL 语句 丢数据库执行下,Access也可以。 只有自己实现一个方法了,先将这类表达式转换成逆波兰式表达式,再使用栈进行计算,实现起来是有一定难度的,特别是其中还夹杂着冪、乘、除、括号等有先后运算顺序的运算符。可以参考以下的一些文档:http://www.ibm.com/developerworks/cn/java/l-expression/index.htmlhttp://www.ibm.com/developerworks/cn/java/j-w3eva/index.html http://www.hendriklipka.de/java/funcpars.htmlhttp://parser.softalizer.com/ 组合成SQL 语句 丢数据库执行下,Access也可以。==========================================强! 常见的递归下降解释器,或者使用一些语法分析生成器,比如javacc,antlr等 java6继承rhino,转成javascript,直接eval也行,或者如上面所说的调用beanshell、ruby之类的脚本来eval 想偷懒吗? 组合成SQL 语句 丢数据库执行下,Access也可以。======================================================学习 java6继承rhino,转成javascript,直接eval也行,或者如上面所说的调用beanshell、ruby之类的脚本来eval=================================================没学过 具体大致有2种方法 4楼 已经说了一种了还有我以前好象做过另一种 是用的c++ 还利用词法分析原理 对错误的表达式有提示http://blog.sina.com.cn/fengyehongpiao 去看看就知道了 想偷懒吗? 组合成SQL 语句 丢数据库执行下,Access也可以。==================================正解 方便实用 我也是这么做的 要不分解起来太麻烦 http://blog.csdn.net/CrazyGou/archive/2007/06/10/1646246.aspx print "计算器,输入q退出\n";while(<>){ $i=$_; chomp($i); unless($i){ next; } if($i =~ m/q/i){ last; } $o=eval($i); print "Answer = $o \n";}执行结果:mo@ubuntu:~/Desktop$ perl calc计算器,输入q退出(3+5)*20/5^8-90Answer = 4294967182Perl些的,JavaScript也有类似的eval函数,可以直接执行字符串表达式,不过Java里有没有还真的不知道 想偷懒吗? 组合成SQL 语句 丢数据库执行下,Access也可以。这个强啊 这个思路要记住 呵呵 想偷懒吗? 组合成SQL 语句 丢数据库执行下,Access也可以。 学习,谢谢! 为什么学了那么久,还是个小白一样,一个简单的语句问题。 在线求救大侠们,如何给容器设置背景图片? java Swing中屏蔽系统热键 那位java前辈能解决此问题 JSP网页出错 请问“子窗口关闭时候,主窗口也一起关闭了“怎么解决? about jar JAVA有那些缺点 急!急!急!谁知道关于用java解析html文档? CharBuffer的clear()小问题 Hibernate 中的事务管理问题 String比较的问题
http://www.ibm.com/developerworks/cn/java/j-w3eva/index.html
http://parser.softalizer.com/
==========================================
强!
、ruby之类的脚本来eval
======================================================
学习
、ruby之类的脚本来eval
=================================================
没学过
http://blog.sina.com.cn/fengyehongpiao 去看看就知道了
想偷懒吗? 组合成SQL 语句 丢数据库执行下,Access也可以。
==================================
正解 方便实用 我也是这么做的 要不分解起来太麻烦
while(<>){
$i=$_;
chomp($i);
unless($i){
next;
}
if($i =~ m/q/i){
last;
}
$o=eval($i);
print "Answer = $o \n";
}执行结果:mo@ubuntu:~/Desktop$ perl calc
计算器,输入q退出
(3+5)*20/5^8-90
Answer = 4294967182
Perl些的,JavaScript也有类似的eval函数,可以直接执行字符串表达式,不过Java里有没有还真的不知道
学习,谢谢!