【问题标题】:Random string picker (string names are exactly the same, except the number)随机字符串选择器(字符串名称完全相同,除了数字)
【发布时间】:2020-05-13 07:13:37
【问题描述】:
Dim rnd As New Random
Dim quote1, quote2, quote3 As String
Dim int As Integer

int = rnd.Next(1, 3)
quote1 = "never give up"
quote2 = "always believe in yourself"
quote3 = "always follow your dreams"

MessageBox.Show("quote" & int)

嘿,谁能告诉我,我如何将 int 分配给单词 quote,所以每次它都会选择不同的引号?

【问题讨论】:

    标签: string vb.net random


    【解决方案1】:

    只需 3 个引号,您就可以执行类似的操作

        Dim quoteIndex As Integer = Rnd.Next(1, 3)
        Dim quote As String = ""
        Select Case quoteIndex
            Case 1
                quote = quote1
            Case 2
                quote = quote2
            Case 3
                quote = quote3
        End Select
        MessageBox.Show(quote)
    

    但老实说,这是一个相当蹩脚的解决方案,更像是忍者代码而不是良好实践。相反,您应该使用数组或列表(可以在此方法中创建或来自其他地方,如重载或模态变量):

        Dim quoteList As New List(Of String)
        quoteList.AddRange({"never give up", "always believe in yourself", "always follow your dreams", "something else"})
    
        Dim quoteChoosen As Integer = Rnd.Next(0, quoteList.Count)  'this array start at zero
        MessageBox.Show(quoteList(quoteChoosen))  '
    

    如果您的列表随着时间的推移而演变(假设它存储在某个变量中),则您的方法不需要更新。例如,您的用户可以在不破坏您的代码的情况下将他自己的励志名言添加到列表中。

    【讨论】:

    • 感谢您关注并告诉我@Jimi。
    【解决方案2】:

    在编写代码时,您在 MessageBox 中显示了一个字符串值。字符串被追加,所以它是动态随机的,但它仍然是一个字符串。

    要获得我认为您正在寻找的效果,您需要使用随机值作为某种指针来引用变量值。使用数组可能是使用此代码执行此操作的最直接的方法。您可以创建一个字符串数组,而不是拥有 3 个不同的引号字符串值...类似于

    quote = 新字符串[]

    在哪里

    quote[0] = "永不放弃"

    然后你可以做类似 MessageBox.Show(quote[int])

    【讨论】:

    • @VladimirsPodmoskovnijs 如果此答案对您有所帮助,请将其标记为已接受(也可以点赞)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    相关资源
    最近更新 更多