我正在编写一个简单的计算器应用程序,在评估语句之前,它会检查以确保正确格式化任何括号。它最初检查是否有相同数量的开放(
和关闭)
括号。如果有,那么它将检查它们是否处于正确的顺序。
与此不同:6) / (1 + 4)8 + (5
。
为此我使用了这段代码:
Chkp("(1+1/2)+(2+3)")
会打电话:
Function ChkP(text As String)
For i As Integer = 0 To CountOf(text, "(") - 1
If CharIndex(text, "(", i) > CharIndex(text, ")", i) Then Return False
Next
Return True
End Function
然后会调用:
Function CharIndex(text As String, character As String, ByRef index As Integer)
For x As Integer = 0 To text.Length - 1
If text(x) = character Then
index -= 1
If index = -1 Then
Return x
End If
End If
Next
Return -1
End Function
如果Chkp
应该返回False
,则括号错误,否则它们是正确的,但是,输出始终是括号无效,即使它们是正确的。
有没有办法解决这个问题?或者只是一种更好的方法来检查括号?
非常感谢任何帮助。
答案 0 :(得分:3)
最简单的方法是检查括号是否平衡,并且在相应的左括号之后总是出现一个紧密的括号:
'('
,则将1添加到嵌套级别;如果字符为')'
,则从嵌套级别中减去1,如果嵌套级别为负,则立即报告失败。