Vb.net 整数到字符串问题
我想做一个吃角子老虎机的程序。我尝试执行的这个过程将为3个随机生成的数字指定一个名称。由于某种原因,我得到一个转换错误,表示它无法将整数转换为字符串。我也尝试了cstr(),但问题仍然存在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"
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控制台应用程序中进行的。