我正在使用此代码搜索字符串数组以查找与输入的匹配项,但是我收到以下错误:
第110页上的任务中发生了'System.IndexOutOfRangeException'类型的未处理异常
以下是代码:
Public Class Form1
Dim letters() As String = {"a", "a", "e", "g", "g", "g", "h", "g", "e", "k", "o", "k", "K", "g"}
Dim search As String
Dim numMatches As Integer = 0
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
search = TextBox1.Text
numMatches = 0
For i = 0 To 14
If search = letters(i) Then
numMatches = numMatches + 1
End If
Next
TextBox2.Text = numMatches
End Sub
End Class
答案 0 :(得分:0)
答案 1 :(得分:0)
有点hacky,但它的工作原理是这样..
Public Class Form1
Dim letterslist As New List(Of String)
Dim search As String
Dim numMatches As Integer
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
letterslist.Clear()
letterslist.Add("a")
letterslist.Add("a")
letterslist.Add("e")
letterslist.Add("g")
letterslist.Add("g")
letterslist.Add("g")
letterslist.Add("h")
letterslist.Add("g")
letterslist.Add("e")
letterslist.Add("k")
letterslist.Add("o")
letterslist.Add("k")
letterslist.Add("k")
letterslist.Add("g")
numMatches = 0
For Each item In letterslist
If item.Contains(TextBox1.Text) Then
numMatches += 1
End If
Next
TextBox2.Text = numMatches
End Sub
End Class
答案 2 :(得分:0)
您正在尝试搜索超出数组范围的值。
vb.net中的数组从0开始存储。因此在for循环中,0 - > 14将搜索阵列中的15个项目。将for循环更改为下面的代码应该可以解决这个问题。
For i = 0 To 13
If search = letters(i) Then
numMatches += 1
End If
Next
另一种方法是使用for循环。
For each value in letters
if search = value then
numMatches += 1
End If
Next
即使您决定稍后更改数组中的数据量,每个循环的A仍然会起作用。
8)