我无法让这个程序工作..我只是想弄清楚如何从GenerateNumbers输出结果输出到主程序以用于其他函数/程序。我试过了
Dim Result1 As String = ThreeResults(0)
Dim Result2 As String = ThreeResults(1)
Dim Result3 As String = ThreeResults(2)
但由于某种原因,它将每个ThreeResults(x)的值设置为“”
Module Module1
Sub Main()
'Declare Variables
Dim UserAnswer As String = "nothing"
Dim UserTokens As String
Dim ThreeResults(2) As String
Dim Result1 As String = ThreeResults(0)
Dim Result2 As String = ThreeResults(1)
Dim Result3 As String = ThreeResults(2)
'Ask user for number of tokens
Console.WriteLine("Enter the number of tokens that you want to gamble with (minimum of 1 token)")
UserTokens = (Console.ReadLine())
UserTokens = ValidateTokens(UserTokens)
Do Until UserAnswer = "no"
ThreeResults = GenerateNumbers()
UserAnswer = DisplayResults(UserTokens, UserAnswer, Result1, Result2, Result3)
Loop
End Sub
Function ValidateTokens(ByVal UserTokens)
Dim dblUserTokens As Double
Do Until IsNumeric(UserTokens)
Console.Write("Sorry you did not enter a valid number. Please try again. ")
UserTokens = Console.ReadLine()
Loop
'Make sure the user entered in a positive number
dblUserTokens = CDbl(UserTokens)
Do Until dblUserTokens > 0
Console.Write("Sorry you did not enter in a positive number. Please try again. ")
UserTokens = Console.ReadLine()
'Make sure the user entered in a number
Do Until IsNumeric(UserTokens)
Console.Write("Sorry you did not enter a valid number. Please try again. ")
UserTokens = Console.ReadLine()
Loop
dblUserTokens = CDbl(UserTokens)
Loop
Return UserTokens
End Function
Function GenerateNumbers()
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"
For x = 0 To 2
results(x) = names(CInt(Int((5 * Rnd()) + 1)))
Next x
Return results
End Function
Function DisplayResults(ByRef UserTokens, ByVal UserAnswer, ByRef number1, ByRef number2, ByRef number3)
Console.WriteLine("*** " & number1 & " ** " & number2 & " ** " & number3 & " ***")
If UserTokens > 0 Then
Console.WriteLine("You have " & UserTokens & " tokens left, do you want to play again? (yes or no)")
UserAnswer = (Console.ReadLine())
Else
Console.WriteLine("Sorry, you lost all of your tokens!")
End If
Return UserAnswer
End Function
结束模块
答案 0 :(得分:1)
您只在主例程的开头设置字符串的值。您需要在设置ThreeResults后设置它。字符串是immutable个对象,因此您的代码不起作用。
Module Module1
Sub Main()
'Declare Variables
Dim UserAnswer As String = "nothing"
Dim UserTokens As String
Dim ThreeResults(2) As String
Dim Result1 As String
Dim Result2 As String
Dim Result3 As String
'Ask user for number of tokens
Console.WriteLine("Enter the number of tokens that you want to gamble with (minimum of 1 token)")
UserTokens = (Console.ReadLine())
UserTokens = ValidateTokens(UserTokens)
Do Until UserAnswer = "no"
ThreeResults = GenerateNumbers()
Result1 = ThreeResults(0)
Result2 = ThreeResults(1)
Result3 = ThreeResults(2)
UserAnswer = DisplayResults(UserTokens, UserAnswer, Result1, Result2, Result3)
Loop
End Sub
Function ValidateTokens(ByVal UserTokens)
Dim dblUserTokens As Double
Do Until IsNumeric(UserTokens)
Console.Write("Sorry you did not enter a valid number. Please try again. ")
UserTokens = Console.ReadLine()
Loop
'Make sure the user entered in a positive number
dblUserTokens = CDbl(UserTokens)
Do Until dblUserTokens > 0
Console.Write("Sorry you did not enter in a positive number. Please try again. ")
UserTokens = Console.ReadLine()
'Make sure the user entered in a number
Do Until IsNumeric(UserTokens)
Console.Write("Sorry you did not enter a valid number. Please try again. ")
UserTokens = Console.ReadLine()
Loop
dblUserTokens = CDbl(UserTokens)
Loop
Return UserTokens
End Function
Function GenerateNumbers()
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"
For x = 0 To 2
results(x) = names(CInt(Int((5 * Rnd()) + 1)))
Next x
Return results
End Function
Function DisplayResults(ByRef UserTokens, ByVal UserAnswer, ByRef number1, ByRef number2, ByRef number3)
Console.WriteLine("*** " & number1 & " ** " & number2 & " ** " & number3 & " ***")
If UserTokens > 0 Then
Console.WriteLine("You have " & UserTokens & " tokens left, do you want to play again? (yes or no)")
UserAnswer = (Console.ReadLine())
Else
Console.WriteLine("Sorry, you lost all of your tokens!")
End If
Return UserAnswer
End Function
End Module