Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 这是正确的代码,可以找出VB中哪个状态以前两个字母开头吗?_Vb.net - Fatal编程技术网

Vb.net 这是正确的代码,可以找出VB中哪个状态以前两个字母开头吗?

Vb.net 这是正确的代码,可以找出VB中哪个状态以前两个字母开头吗?,vb.net,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(letter

这是我课本上的代码,用来找出哪个州以前两个字母开头

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
我认为loop的位置是错误的,它将循环,直到它找到一个名称超过人们追求的字母顺序的状态

我想应该是这样

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
哪个是对的,为什么

===================== 更新

我真的无法理解1st背后的逻辑,它会找出名称超过人们所追求的字母顺序的州,但是如果我想要的州是EFA,它旁边的州是FFA,而第一个代码findFFA,我就没有意义了

更新2

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吗?

为什么你不能自己运行它来看看哪一个有效?你想知道你的问题的答案还是更好的方法?@Steve我想知道它背后的逻辑和原因。@Steve看到更新的问题了,先生。我仍然不明白为什么第二个循环是错误的,第一个循环没有跳过第一个元素?上面的代码经过了很好的测试,您是对的,第一个循环只有在它是列表框中的最后一项时才会找到状态。但是,第二个循环找不到列表框中第一项的状态。你应该从i=-1开始。