首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

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

2012-07-30 
如何判断四则运算的表达式正确性。http://www.baidu.com/s?wd24%E7%82%B9%E6%B8%B8%E6%88%8F&rsv_spt1&is

如何判断四则运算的表达式正确性。
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 抛出异常 然后做错误处理

热点排行