初级Visual Basic编码器根据需要对所有代码进行了编码,但是decTotalCharges = ComputeCharges(intDays, decMCharges, decSCharges, decLabFees, decRehabFees)
使我很难受-错误显示“未为“公共函数计算更改”的参数'decRehabFees'指定参数。 ...”
任何想法如何解决这个问题?或任何简化此代码的技巧?这是用于大学项目的笑声。
Option Strict
Public Class Form1
Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
'Declare variables
Dim intDays As Integer
Dim decMCharges As Decimal
Dim decSCharges As Decimal
Dim decLabFees As Decimal
Dim decRehabFees As Decimal
Dim decTotalCharges As Decimal
Dim decTax As Decimal
Dim decTotal As Decimal
Try
GetInfo(intDays, decMCharges, decSCharges, decLabFees, decRehabFees)
decTotalCharges = ComputeCharges(intDays, decMCharges, decSCharges, decLabFees, decRehabFees)
decTax = ComputeTax(decTotalCharges, decTax)
decTotal = ComputeTotal(decTotalCharges, decTax, decTotal)
Display(decTotalCharges, decTax, decTotal)
Catch ex As Exception
End Try
End Sub
Sub GetInfo(ByRef intDays As Integer, ByRef decMCharges As Decimal, ByRef decSCharges As Decimal, ByRef decLabFees As Decimal, ByRef decRehabFees As Decimal)
'Recieves values
intDays = CInt(txtDays.Text)
decMCharges = CDec(txtMCharges.Text)
decSCharges = CDec(txtSCharges.Text)
decLabFees = CDec(txtLabFees.Text)
decRehabFees = CDec(txtRehabFees.Text)
End Sub
Function ComputeCharges(ByRef decTotalCharges As Decimal, ByVal intDays As Integer, ByVal decMCharges As Decimal, ByVal decSCharges As Decimal, ByVal decLabFees As Decimal, ByVal decRehabFees As Decimal) As Decimal
'GetInfo(intDays, decMCharges, decSCharges, decLabFees, decRehabFees)
decTotalCharges = CDec(intDays * 300) + decMCharges + decSCharges + decLabFees + decRehabFees
End Function
Function ComputeTax(ByVal decTotalCharges As Decimal, ByRef decTax As Decimal) As Decimal
decTax = CDec(decTotalCharges * 0.07)
End Function
Function ComputeTotal(ByVal decTotalCharges As Decimal, ByVal decTax As Decimal, ByRef decTotal As Decimal) As Decimal
decTotal = decTotalCharges + decTax
End Function
Function Display(ByVal decTotalCharges As Decimal, ByVal decTax As Decimal, ByVal decTotal As Decimal) As String
lblTax.Text = decTax.ToString("c")
lblTotal.Text = decTotal.ToString("c")
lblTotalCharges.Text = decTotalCharges.ToString("c")
End Function
结束班级
答案 0 :(得分:2)
ComputeCharges
需要6个参数。您只需输入5。您需要提供第一个参数ByRef decTotalCharges As Decimal
。
答案 1 :(得分:0)
您在做单一工作方法方面做得很好,但我认为您有些过分。如果您的函数只有一行代码,那么传递ByRef参数没有什么意义。我想在文本框的Validating事件中看到验证代码。不要依靠异常处理来处理可预防的异常。
.TryParse返回一个布尔值,并填充具有正确数据类型的变量。
在.net中使用函数时,它们需要一个返回类型和一个与函数类型匹配的Return语句。
Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
'Validate user input
Dim intDays As Integer
If Not Integer.TryParse(txtDays.Text, intDays) Then
MessageBox.Show("Fill in Days with a number")
Exit Sub
End If
Dim decMCharges As Decimal
If Not Decimal.TryParse(txtMCharges.Text, decMCharges) Then
MessageBox.Show("Fill in MCharges with a number")
Exit Sub
End If
Dim decSCharges As Decimal
If Not Decimal.TryParse(txtSCharges.Text, decSCharges) Then
MessageBox.Show("Fill in SCharges with a number")
Exit Sub
End If
Dim decLabFees As Decimal
If Not Decimal.TryParse(txtLabFees.Text, decLabFees) Then
MessageBox.Show("Fill in LabFees with a number")
Exit Sub
End If
Dim decRehabFees As Decimal
If Not Decimal.TryParse(txtRehabFees.Text, decRehabFees) Then
MessageBox.Show("Fill in RehabFees with a number")
Exit Sub
End If
'Compute charges
Dim decTotalCharges As Decimal
Dim decTax As Decimal
Dim decTotal As Decimal
decTotalCharges = intDays * 300 + decMCharges + decSCharges + decLabFees + decRehabFees
decTax = decTotalCharges * 0.07D
decTotal = decTotalCharges + decTax
'Display
lblTax.Text = decTax.ToString("c")
lblTotal.Text = decTotal.ToString("c")
lblTotalCharges.Text = decTotalCharges.ToString("c")
End Sub