读书人

怎么判断四则运算的表达式正确性

发布时间: 2012-07-30 16:19:05 作者: rapoo

如何判断四则运算的表达式正确性。
http://www.baidu.com/s?wd=24%E7%82%B9%E6%B8%B8%E6%88%8F&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&oq=24%E7%82%B9&rsp=0&f=3&inputT=8110

二十四点游戏,通过输入表达式,计算加减乘除24的结果。
4-(-6)*10/3=24
4-((-6)*10)/3=24
4-(-6)*(10/3)=24
4-((-6)*10/3)=24
4-(((-6)*10)/3)=24
4-((-6)*(10/3))=24

在24点在线网站中,如果表达式不对,小游戏会提示你的表达式不正确。

最常见的问题是表达式不正确


4-(-6)*10/3= ?
4-(-6)*10)/3= ?
4-(-6)*(10/3= ?
4-((-6*10/3)= ?
4-((-6)*10)/3)= ?
4 ((-6)*10/3))= ?

谢谢。




[解决办法]

有许多方法,例如:

1 扫描法。对找到的左右括号分别计数。

2 Repace 方法,先后将左右括号用空串替代,比较两次替换后的串长度是否相等。

strTmp1 = Replace(strSource, "(", "")
strTmp1 = Replace(strSource, ")", "")

If len(strTmp1) = len(strTmp2) Then
MsgBox "Good"
Else
KsgBox "Bad"
End If

3 Split 方法。先后以左右括号为分隔符分解原串,比较两次得到的数组上限索引。
Dim strTmp1() As String, strTmp2() As String

strTmp1 = Split(strSource, "(")
strTmp1 = Split(strSource, ")")

If UBound(strTmp1) = Ubound(strTmp2) Then
MsgBox "Good"
Else
KsgBox "Bad"
End If

4. 正则表达式方法,在 Global 属性为 True 的条件下,分别测试左右括号的匹配数。

5. More ...


[解决办法]
简单方法 eval 抛出异常 然后做错误处理

读书人网 >VB

热点推荐