Vb.net 整数到字符串问题

Vb.net 整数到字符串问题,vb.net,Vb.net,我想做一个吃角子老虎机的程序。我尝试执行的这个过程将为3个随机生成的数字指定一个名称。由于某种原因,我得到一个转换错误,表示它无法将整数转换为字符串。我也尝试了cstr(),但问题仍然存在 Sub GenerateNumbers() Dim numbers(2) As Integer Dim names(5) As String Dim x As Integer names(0) = "Cherries" names(1) = "Oranges"

我想做一个吃角子老虎机的程序。我尝试执行的这个过程将为3个随机生成的数字指定一个名称。由于某种原因,我得到一个转换错误,表示它无法将整数转换为字符串。我也尝试了cstr(),但问题仍然存在

 Sub GenerateNumbers()
    Dim numbers(2) As Integer
    Dim names(5) As String
    Dim x As Integer

    names(0) = "Cherries"
    names(1) = "Oranges"
    names(2) = "Plums"
    names(3) = "Bells"
    names(4) = "Melons"
    names(5) = "Bar"

    For x = 0 To 2
        numbers(x) = names(CInt(Int((6 * Rnd()) + 1)))
    Next x
End Sub

给我错误:从字符串“Oranges”到类型“Integer”的转换无效

Int(6*Rnd())将得到0-5,如果你+1,则溢出

问题是你从
名称
数组中得到一个随机字符串,并试图将其分配给声明为整数数组的
数字。这当然行不通

除此之外,正如Eric指出的,还有越界指数的问题


编辑以回应评论:

要获取这些随机生成的老虎机结果的文本值,只需声明数组以将结果存储为字符串,声明方式与
names
相同

为了能够从单独的过程中获得结果,您需要将其从
Sub
更改为
Function
,这是一个可以返回值的过程,在本例中是一个字符串数组。然后可以从
Main
或任何其他过程调用此函数,并将返回的值存储在变量中

我还通过随机结果生成更正了该部分

Module SlotMachine

    Sub Main()
        Dim slotResults As String()

        'Get the results
        slotResults = GenerateResults()

        'Some further processing of results here, e.g. print results to console
        For Each item In slotResults
            Console.WriteLine(item)
        Next

        'Wait for keypress before closing the console window 
        Console.ReadLine()
    End Sub

    'Generates random results
    Function GenerateResults() As String()
        Dim results(2) As String
        Dim names(5) As String
        Dim x As Integer

        names(0) = "Cherries"
        names(1) = "Oranges"
        names(2) = "Plums"
        names(3) = "Bells"
        names(4) = "Melons"
        names(5) = "Bar"

        Randomize()

        For x = 0 To 2
            results(x) = names(Int(6 * Rnd()))
        Next x

        Return results
    End Function

End Module

不要连续调用Randomize(),如果在没有参数的情况下调用,它会随着系统时间重新初始化(种子)随机数生成器,因此如果在短时间内重复调用它,Rnd()返回的值很可能不会是随机的。在第一次使用Rnd()之前,不带参数地调用Randomize(),或者,如果您想在每次运行时都获得相同的伪随机序列,则使用常量参数。是的,我刚才就知道了。我现在的问题是,我无法将数字1、2或3转换为指定的文本值。我试过numberx=cstr(“文本”)。当然还有OP.oops,好吧,我把它改成int(5*Rnd())+1。但它仍然给我同样的感觉error@Kudla69我不完全理解您希望通过代码实现什么。
numbers
array代表什么?numbers代表3种不同的老虎机结果。结果应该是这样的:樱桃橙子条或西瓜等@Kudla69,你还需要存储这些随机结果的数值还是只存储文本值?非常感谢。如何更改它以使其输出结果?我真的很抱歉,我还在学习stuff@Kudla69添加了一个简单的for-each循环,它将遍历结果,并将结果逐个打印到控制台。当您学习这些东西时,我假设您是在VB控制台应用程序中进行的。