使用for循环搜索字符串数组时出错

时间:2017-01-18 16:23:52

标签: arrays string vb.net exception

我正在使用此代码搜索字符串数组以查找与输入的匹配项,但是我收到以下错误:

  

第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

3 个答案:

答案 0 :(得分:0)

我想通过LINQ提交一个答案,您可以了解有关here.的更多信息

.ser

希望这有帮助

答案 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)