我正在尝试使用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
答案 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)
的信息: