繁体   English   中英

visual basic array case语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM