[英]visual basic array case statement
我是visual basic的新手,并且一直在使用vb.net来创建基于控制台/文本的游戏。 我想让我的游戏变得更“聪明”。 我必须这样做的想法是为yes创建一个同义词数组,为no创建一个同义词数组,为over words创建类似的数组。 我打算在数组中使用case语句来决定用户输入的天气是yes或no的同义词。 到目前为止,我没有运气,我想知道这里是否有人知道如何做到这一点,或者我是否正在咆哮错误的树。 也许我有不同的方式来解决这个问题?
我的选择尝试:
Select Case userInput
Case yes(0) To yes(34)
Console.WriteLine("you said something like yes, you said {0}", userInput)
End Select
我的数组的开头:(到目前为止有34个同义词)
Dim yes(0 To 34) As String
yes(0) = "yes"
yes(1) = "ok"
yes(2) = "yep"
yes(3) = "yeah"
如果有人可以帮助我,将非常感谢:)非常感谢你!
我会创建一个翻译词典
Dim translations As New Dictionary(Of String, String)
translations.Add("yes", "yes")
translations.Add("ok", "yes")
translations.Add("yep", "yes")
translations.Add("yeah", "yes")
translations.Add("no", "no")
translations.Add("nope", "no")
通过这些定义,您可以非常轻松地获得答案的标准版本
Dim userInput = "yeah"
Dim response As String = Nothing
translations.TryGetValue(userInput, response)
Select Case response
Case "yes"
Console.WriteLine("ok")
Case "no"
Console.WriteLine("cancel")
Case Else
Console.WriteLine("rubbish!")
End Select
字典具有最快的查找时间。
您不必为此目的使用Select Case
。 一个简单的List(Of T).Contains
可以做到这一点。 然后你可以继续把它放在一个函数中,这样你就可以在你的应用程序中多次调用它。
示例代码:
Public Enum Answer
Yes
No
Other
End Enum
Public Function GetAnswer(answer As String) As Answer
Static yesAnswers = New List(Of String)({"yes", "yeah", "yep", "aye"})
Static noAnswers = New List(Of String)({"no", "nope", "nay"})
If yesAnswers.Contains(answer.ToLower()) Then
Return Answer.Yes
ElseIf noAnswers.Contains(answer.ToLower()) Then
Return Answer.No
Else
Return Answer.Cancel
End If
End Function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.