比较字符串和数组

时间:2013-02-01 04:57:28

标签: arrays vb.net string for-loop

我正在尝试使用visual basic中的for循环将字符串变量与字符串数组的元素进行比较。我按顺序将用户输入的字符串变量与具有小写字母的数组进行比较。我有一些逻辑错误,因为我的“计数”变量由于某种原因总是在25,因此它总是说“抱歉,再试一次”,除非用户输入Z.请帮忙!

 Dim lower() As String = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l",    "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}
   For count As Integer = 0 To 25
        input = txtInput.Text
        input = input.ToLower
        If input.Equals(lower(count)) Then
            txtResult.Text = "Correct"
        Else
            txtResult.Text = "Sorry, Try again"
        End If
    Next

2 个答案:

答案 0 :(得分:1)

欢迎使用StackOverflow!

只有键入“z”才能获得“正确”结果的原因是“z”是数组的最后一项。如果输入“y”,则结果对于count = 24(lower(24)=“y”)是正确的,但在下一步中它将“y”与lower(25)进行比较,实际上是“z”。因此txtResult.Text将被“抱歉,再试一次”覆盖。

正确完成任务后,您需要检查数组中是否存在输入字符串。为此,您可以使用Array.Contains方法:

Dim lower() As String = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l",    "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}
Dim input As String = txtInput.Text
If (lower.Contains(input)) Then
    txtResult.Text = "Correct"
Else
    txtResult.Text = "Sorry, Try again"
End If

答案 1 :(得分:1)

问题是你应该在找到匹配后退出循环(使用exit for)。否则,任何不匹配的字符都会将txtResults.Text重置为“抱歉,请重试”。例如,当您输入“f”时,txtResults.Text设置为“Correct”。但是当你到达目前,它将txtResults.Text更改为“抱歉,再试一次。”,以及h,我等等。

这是一个很好的编程练习,但你可以使用一个快捷方式:

lower.contains(input.lower)

的信息:

http://msdn.microsoft.com/en-us/library/dy85x1sa.aspx