我正在尝试制作老虎机程序。我正在尝试执行的此过程将为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”类型的转换无效
答案 0 :(得分:1)
Int(6 * Rnd())会得到0-5,如果你+1,那么溢出
答案 1 :(得分:1)
问题是你从names
数组中获取一个随机字符串并尝试将其分配给numbers
,它被声明为整数数组。当然这不会起作用。
除此之外,埃里克指出还存在越界索引的问题。
修改以回应评论:
要获取那些随机生成的老虎机结果的文本值,您只需要声明数组将结果存储为字符串,与声明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