2

我正在尝试使用 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
4

2 回答 2

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
于 2013-02-01T06:33:29.157 回答
1

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

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

lower.contains(input.lower)

信息:

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

于 2013-02-01T06:35:39.103 回答