将程序拆分为程序/功能

时间:2014-11-18 21:34:05

标签: vb.net function procedure

这是我正在使用的代码。我试图通过将程序分解为程序和功能来组织程序。代码在未拆分时工作,但是当我以下面的格式使用时,当前数字变为0.我是否需要将UserInput更改为函数而不是过程?我需要更新多个值并返回到主程序,因此我不知道如何将其用作函数。在此先感谢您的帮助,我为我的小说道歉,我仍处于学习编程的早期阶段。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Call ExplanationOfGame()
    CurrentNumber = RandomNumber()
    Label2.Text = CurrentNumber
    While CurrentNumber <> 0
        Call UserInput(UserNumber, CurrentNumber, Answer)
        Call ComputerInput(ComputerNumber, CurrentNumber, Answer)
    End While
    Call DecideWinner(CurrentNumber, Answer)
End Sub

Sub UserInput(ByVal CurrentNumber As Integer, ByVal UserNumber As Integer, ByVal Answer As Integer)
    Answer = 1
    Do
        UserNumber = InputBox("Enter number to minus from the current number (1, 2 or 3). The current number is: " & CurrentNumber)
    Loop Until (CurrentNumber - UserNumber) >= 0
    CurrentNumber = CurrentNumber - UserNumber
    Label2.Text = CurrentNumber
    MsgBox("You took " & UserNumber & " away from the current number. The new current number is " & CurrentNumber)
End Sub

1 个答案:

答案 0 :(得分:1)

在UserInput函数中,使用ByRef而不是ByVal作为参数。 ByVal只传入变量的值,因此您实际上并没有修改原始变量。

另一个选项是将其更改为函数并仅返回CurrentValue。您似乎传递了两个参数 - UserNumber和Answer - 不需要传递。

您可以将其更改为:

Function UserInput(CurrentNumber As Integer) As Integer
    ...
End Function

然后使用:

调用它
CurrentNumber = UserInput(CurrentNumber)