如何在此vb应用程序中传递变量的结果?

时间:2014-04-16 20:21:00

标签: vb.net msgbox

我已经编写了下面的代码来计算大于或等于1的数字因子。

Public Class FactorialApp

    Private Function FactorialChecker(myNumber As Integer)
        myNumber = Val(FactorialTextBox.Text)
        If myNumber < 1 Then
            FactorialChecker = 1

        Else
            FactorialChecker = myNumber * FactorialChecker(myNumber - 1)
        End If
    End Function

    Public Sub ResultButton_Click(sender As Object, e As EventArgs) Handles ResultButton.Click

    End Sub

End Class

我想在button_click事件中设置一个消息框,其中显示 5的阶乘为120 ,点击其中5应该是myNumber和120 FactorialChecker()函数,但我不知道如何在VB的MsgBox命令中返回值,我只习惯于C#。

我尝试了代码段

    MsgBox("The Factorial of  + myNumber "is" + FactorialChecker() "") 

但是我在visual studio中遇到了语法错误,并且错误地认为我的myNumber变量未在程序中声明。我该怎么做才能解决这些错误?

3 个答案:

答案 0 :(得分:6)

像这样:

MsgBox("The Factorial of " + myNumber + " is " + FactorialChecker()) 

您只是没有关闭字符串第一部分的引号,因此它们是不平衡的,因此您的编译器错误。另外,我添加了一些间距因为我认为你会想要它们。

请注意,在VB.NET中,使用MessageBox.Show比旧的VB6样式MsgBox函数更可取。此外,在VB中,&运算符通常建议使用+运算符进行字符串连接,因为+运算符在Option Strict Off时可能会产生意外结果。所以,这将是更好的方法:

MessageBox.Show("The Factorial of " & myNumber & " is " & FactorialChecker()) 

答案 1 :(得分:1)

首次尝试时,将myNumber = Val(FactorialTextBox.Text)移至按钮单击处理程序。如果每次调用FactorialChecker函数时重新加载它,那么您的递归将无法按照您希望的方式工作。

此外,您没有声明它或指定类型,因此您可能希望将该行更改为Dim myNumber As Double = Val(FactorialTextBox.Text)。然后在其下方添加MessageBox.Show电话,正如其他人所说的那样。

Val()可能不是一个好选择,因为它返回一个Double,而factorial函数仅为非负整数定义。你可能真的希望myNumber是一个整数(或一个Long,或其他东西,取决于你需要的范围)。然后,您可以将Val()替换为CInt()Integer.ParseInteger.TryParse,并添加错误检查以确保该值为非负数.Integer.TryParse,以及添加错误检查以确保该值为非负值。

答案 2 :(得分:1)

myNumberFactorialChecker函数内声明。如果您尝试在该功能之外访问它,它将不存在。您可能需要将其作为该类的属性。