求教实现字符串转换为执行语句的方法!~~~~~ 想做一个简单的计算器,在一个textField里面直接输入计算式子,比如"1*8+9-6/2*9+1",通过一个String把这个公式读取了,然后把这一String转换成语句得出计算结果?请问这样该如何实现吗??求教,谢谢了~! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以把这个运算表达式的语句重新生成一个Java程序在Caculator.java, 如:String caculatorStr = "public class Calculator {"+ " public static void main(String[] args) {"+ " int a =" + 刚才的表达式字符串+ " }"+ "}"; 再加上把结果写入文件的语句.再写一个bat文件:javac Calculator.javajava Calculator当你按下回车的时候, 用Runtime来运行这个bat文件, 编译运行这个新生成的程序, 然后把运行后的结果保存到文件. 当前程序再从文件中读取这个结果显示出来.吼吼. js 里有eval("1*8+9-6/2*9+1")可以直接运算。 如果单纯是没括号这种, 从左到右可以遍历 遇到* / 找到左右的数字运算, 再算 + - 的直到没运算符。 ---好像比较笨。。如果是有扩号那种就麻烦些了, 可能要用堆栈实现逆波兰式,估计要看看瞄瞄数据结构了http://www.cjsdn.net/post/view?bid=1&id=130280&sty=3 大体上两种方法 一种走数据结构 逆波兰表达式一种走动态执行 可以去网上找现成的开发包 如MVEL等(可能运算四则还不成熟)或js的eval 再或就是如3楼的思路 不过可以 通过IO构建新类 调用cmd命令编译 和 反射执行 按照 5、6 楼说的吧,把中缀表达式转换成后缀表达式。如果是 JDK 6 的话,可以使用它提供的 JavaScript 引擎,使用 eval 函数来计算。 答:很简单。用JEP吧。有名的JAVA表达式类库包。import org.nfunk.jep.*;//第一步:创建一个分析器对象JEP myParser = new oJEP();//第二步:求值。myParser.parseExpression("1*8+9-6/2*9+1+(1+2)*(3+4)");//第三步:返回表达式结果double result = myParser.getValue(); 问题已经用逆波兰式解决!分给了第一个给出建议的5楼zealVampire 谢谢! hibernate 选择题 求解释 ,谢谢亲 加了package后怎么运行 new ArrayList(10)(原始类型什么意思),分配容量为10,那么这个10是什么意思? 一简单程序 如何处理匿名重复发帖的问题 关于浏览器表单登录后,SESSION无法共享的问题? 请问用java对sql server2000进行查询、添加、删除等操作应如何写 怎样响应鼠标事件? 关于JBuilder的问题 serverlet.jar如何解压? JButton连续响应回车键的问题 java中类的继承问题请教
String caculatorStr = "public class Calculator {"
+ " public static void main(String[] args) {"
+ " int a =" + 刚才的表达式字符串
+ " }"
+ "}"; 再加上把结果写入文件的语句.再写一个bat文件:
javac Calculator.java
java Calculator当你按下回车的时候, 用Runtime来运行这个bat文件, 编译运行这个新生成的程序, 然后把运行后的结果保存到文件. 当前程序再从文件中读取这个结果显示出来.吼吼.
一种走数据结构 逆波兰表达式
一种走动态执行 可以去网上找现成的开发包 如MVEL等(可能运算四则还不成熟)
或js的eval 再或就是如3楼的思路 不过可以 通过IO构建新类 调用cmd命令编译 和 反射执行
import org.nfunk.jep.*;//第一步:创建一个分析器对象
JEP myParser = new oJEP();//第二步:求值。
myParser.parseExpression("1*8+9-6/2*9+1+(1+2)*(3+4)");//第三步:返回表达式结果
double result = myParser.getValue();
分给了第一个给出建议的5楼zealVampire 谢谢!