这是正确的代码,找出哪个州开始与VB中的前两个字母?

时间:2014-10-04 19:19:50

标签: vb.net

这是我教科书中的代码,用于找出哪个州以前两个字母开头。

Dim letters As String=mtbFirstTwoLetters.Text.ToUpper
Dim i As Integer=0
Do Until(CStr(lstStates.Items(i)).ToUpper>letters)  Or(i=lstStates.Items.Count-1)
   i +=1
Loop
If CStr(lstStatesItems(i)).ToUpper.StartsWith(letters) Then
   txtOutput.Text=CStr(lstStates.Items(i))&" begins with " & mtbFirstTwoLetters.Text & ". "
Else
  txtOutput.Text="No state begins with " & mtbFirstTwoLetters.Text & ". "
End If

我认为循环的位置是错误的,它会循环,直到找到一个名字超过所要求的字母的字母。

我认为应该是

Dim letters As String=mtbFirstTwoLetters.Text.ToUpper
Dim i As Integer=0
Do 
   i +=1
Loop Until(CStr(lstStates.Items(i)).ToUpper>letters)  Or (i=lstStates.Items.Count-1) Or (CStr(lstStatesItems(i)).ToUpper=letters)

If CStr(lstStatesItems(i)).ToUpper.StartsWith(letters) Then
   txtOutput.Text=CStr(lstStates.Items(i))&" begins with " & mtbFirstTwoLetters.Text & ". "
Else
  txtOutput.Text="No state begins with " & mtbFirstTwoLetters.Text & ". "
End If

哪个是正确的,为什么?

===================== 修订版

我真的无法理解第一个背后的逻辑,它会按字母顺序找出其名称超过所追求的状态,但如果我想要的状态是 EFA 并且状态如下它是 FFA ,第一个代码找到 FFA ,对我来说没有意义。

UPDATE2

Do Until(CStr(lstStates.Items(i)).ToUpper>letters)  Or (i=lstStates.Items.Count-1) Or (CStr(lstStatesItems(i)).ToUpper=letters)
       i +=1
Loop 

我现在还需要设置i = -1吗?

0 个答案:

没有答案