数组和功能麻烦

时间:2011-12-10 01:53:03

标签: vb.net

我无法让这个程序工作..我只是想弄清楚如何从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

结束模块

1 个答案:

答案 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