Topic: 如何计算一个字符串表达式的值? |
Print this page |
1.如何计算一个字符串表达式的值? | Copy to clipboard |
Posted by: sundy726 Posted on: 2003-03-30 02:37 如下: String tmpstr ; tmpstr = "1*2*3*4"; 我的本意是想把运算表达式放在一个字符串变量中,然后在取得它的实际结果。 如果想得到tmpstr所表达的运算结果(24)的话,如何做到? 或者有什么其他的方法可以取代? |
2.Re:如何计算一个字符串表达式的值? [Re: sundy726] | Copy to clipboard |
Posted by: rainman Posted on: 2003-03-30 03:32 写一个简单的parser咯。 |
3.Re:如何计算一个字符串表达式的值? [Re: sundy726] | Copy to clipboard |
Posted by: jiangns3000 Posted on: 2003-03-30 10:20 学过编译吧,无论是一个简单的还是更复杂的表达式求值,都是一次课外作业。也是一个也许是经典的程序设计题。现在该知道有些理论知识还是重要的。以前不少人认为这些全是些无用的东西。当然这些都是题外话了。在JAVA中(JDK)没有现成的类用来进行这样的求值。你来写一个。 |
4.Re:如何计算一个字符串表达式的值? [Re: sundy726] | Copy to clipboard |
Posted by: redfox Posted on: 2003-03-31 10:12 可以用一个类SringToken,其用途是把一个字符串解析,中间以空格隔开,例如你可以把“1+2+4”写成“1 + 2 + 4”,这样系统 会把其解析成“1““+”“2”“+”“4”,然后用一个循环分别取变量和符号,计算结果 |
5.Re:如何计算一个字符串表达式的值? [Re: sundy726] | Copy to clipboard |
Posted by: shsen Posted on: 2003-03-31 16:33 编译原理 |
6.Re:如何计算一个字符串表达式的值? [Re: sundy726] | Copy to clipboard |
Posted by: greenflute Posted on: 2003-03-31 17:17 利用Java的Scripting功能吧,有Mozilla的Rhino,IBM的BSF,还有Jython...太多啦。 |
7.Re:如何计算一个字符串表达式的值? [Re: sundy726] | Copy to clipboard |
Posted by: mochow Posted on: 2003-03-31 18:56 用StringTokenizer把1*2*4这样的式子的数字分开,以*为分隔符。 经过一定的转化,就可以得到1,2,4等数字的String形式,转化为 int就可以计算了 |
8.Re:如何计算一个字符串表达式的值? [Re: sundy726] | Copy to clipboard |
Posted by: jiangns3000 Posted on: 2003-03-31 19:30 String tmpstr ; tmpstr = "1*(2+3)*4 - 5"; StringTokenizer如何做? |
9.Re:如何计算一个字符串表达式的值? [Re: sundy726] | Copy to clipboard |
Posted by: mochow Posted on: 2003-03-31 19:50 看看StringTokenizer这个类的用法吧 用StringTokenizer分开1*2*3*4中的数字,以*为分隔符。 然后转化为String,接着转化为int计算即可 |
10.Re:如何计算一个字符串表达式的值? [Re: sundy726] | Copy to clipboard |
Posted by: jiangns3000 Posted on: 2003-03-31 19:54 不对吧,(,),+,-,*有这么多运算符呢! |
11.Re:如何计算一个字符串表达式的值? [Re: sundy726] | Copy to clipboard |
Posted by: mochow Posted on: 2003-03-31 22:29 哦,这个还没有考虑,呵呵 看来没初看起来那么简单哦 |
12.Re:如何计算一个字符串表达式的值? [Re: jiangns3000] | Copy to clipboard |
Posted by: snowbug Posted on: 2003-03-31 23:32 jiangns3000 wrote: 这个问题不能用 stringtokenizer 之类的方法来解决。 其实在几乎所有计算机语言的教程里有关堆栈 (stack) 的章节都会有类似的习题。解决方法是使用两个堆栈,一个放操作数 (operand),另一个放操作符 (operator),把表达式改成post-order进行计算: 1*2+3/5 ==> 1 2 * 3 5 / + 具体操作请参考流行计算机语言的教科书的有关堆栈章节。 |
13.Re:如何计算一个字符串表达式的值? [Re: sundy726] | Copy to clipboard |
Posted by: sundy726 Posted on: 2003-04-01 00:44 多谢各位了,我自己在考虑考虑 |
14.Re:如何计算一个字符串表达式的值? [Re: sundy726] | Copy to clipboard |
Posted by: mochow Posted on: 2003-04-01 21:43 没错,数据结构的书里讲堆栈的时候就举的这个例子 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |