Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 程序正在为值返回0_Vb.net_Visual Studio 2010_Vba - Fatal编程技术网

Vb.net 程序正在为值返回0

Vb.net 程序正在为值返回0,vb.net,visual-studio-2010,vba,Vb.net,Visual Studio 2010,Vba,所以我要写一个程序来计算信用卡账单的余额和最低付款额。程序应使用如下所示的事件程序。财务费用为旧余额的1.5%。如果新余额为20美元或更少,则最低付款额应为整个新余额。否则,最低付款额应为20美元加上20美元以上新余额金额的10%。活动程序如下: Private Sub btnCalcBal_Paymt_Click(sender As Object, e As EventArgs) Handles btnCalcBal_Paymt.Click Dim oldBalance, charge

所以我要写一个程序来计算信用卡账单的余额和最低付款额。程序应使用如下所示的事件程序。财务费用为旧余额的1.5%。如果新余额为20美元或更少,则最低付款额应为整个新余额。否则,最低付款额应为20美元加上20美元以上新余额金额的10%。活动程序如下:

Private Sub btnCalcBal_Paymt_Click(sender As Object, e As EventArgs) Handles btnCalcBal_Paymt.Click
    Dim oldBalance, charges, credits, newBalance, minPayment As Double
    InputData(oldBalance, charges, credits)
    CalculateNewValues(oldBalance, charges, credits, newBalance, minPayment)
    DisplayData(newBalance, minPayment)
End Sub

Sub InputData(oldBalance As Double, charges As Double, credits As Double)
    oldBalance = CDbl(txtOldBal.Text)
    charges = CDbl(txtCharges.Text)
    credits = CDbl(txtCredits.Text)
End Sub
Function CalculateNewValues(oldBalance As Double, newBalance As Double, minPayment As Double, charges As Double, credits As Double) As Double
    Dim rate As Double = 1.015
    newBalance = (rate * oldBalance) + charges - credits
    Return newBalance
    If newBalance <= 20 Then
        minPayment = newBalance
    Else
        Return minPayment + (0.1 * newBalance)
    End If
End Function

Sub DisplayData(newBalance As Double, minPayment As Double)
    txtNewBal.Text = newBalance.ToString("c")
    txtMinPmt.Text = minPayment.ToString("c")
End Sub

编译时,结果为零。不知道为什么

您的问题是没有正确修改变量。将参数传递给子函数的方法不会修改btnCalcBal\u Paymt\u Click方法中的值。您可以使用函数返回所需的值,尽管这样做会更加困难。最后,您可以在参数中使用ByRef,以便通过引用而不是通过值将变量传递给子函数


让我知道这是否有帮助

您使用的函数太多,无法完成一项相当简单的任务。您可以在单个事件处理程序中执行任何操作。比如:

Private Sub btnCalcBal_Paymt_Click(sender As Object, e As EventArgs) Handles btnCalcBal_Paymt.Click
    Dim oldBalance, charges, credits, newBalance, minPayment As Double
    oldBalance = CDbl(txtOldBal.Text)
    charges = CDbl(txtCharges.Text)
    credits = CDbl(txtCredits.Text)

    Dim rate As Double = 1.015
    newBalance = (rate * oldBalance) + charges - credits
    If newBalance <= 20 Then
        minPayment = newBalance
    Else
        minPayment = minPayment + (0.1 * newBalance)
    End If

    txtNewBal.Text = newBalance.ToString("c")
    txtMinPmt.Text = minPayment.ToString("c")
End Sub

我意识到为时已晚,但也许其他苦苦挣扎的学生可以利用这一点。这是有效的,它实现了书中希望你做的事情

Public Class Form1


Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCompute.Click


    Dim oldBalance, charges, credits, newBalance, minPayment As Double
    InputData(oldBalance, charges, credits)
    CalculateNewValues(oldBalance, charges, credits, newBalance, minPayment)
    DisplayData(newBalance, minPayment)


End Sub

Sub InputData(ByRef oldBalance As String, ByRef charges As String, ByRef credits As String)
    oldBalance = CDbl(txtOldBal.Text)
    charges = CDbl(txtCharges.Text)
    credits = CDbl(txtCredits.Text)
End Sub

Sub CalculateNewValues(ByRef oldBalance As Double, ByRef charges As Double, ByRef credits As Double, ByRef newBalance As Double, ByRef minPayment As Double)
    Dim rate As Double = 1.015
    newBalance = (rate * oldBalance) + charges - credits
    If newBalance <= 20 Then
        minPayment = newBalance
    Else
        minPayment = ((newBalance - 20) * 0.1) + 20
    End If

End Sub

Sub DisplayData(newBalance As Double, minPayment As Double)
    lblMinPay.Text = minPayment.ToString("C")
    lblNewBal.Text = newBalance.ToString("C")
End Sub

End Class

那么,问题是什么呢?先生,请扩展话题。所以我要写一个程序来计算信用卡对账单的余额和最低付款额。程序应使用如下所示的事件程序。财务费用为旧余额的1.5%。如果新余额为20美元或更少,则最低付款额应为整个新余额。否则,最低付款额应为20美元加上20美元以上新余额金额的10%。事件过程是:Dim oldBalance、charge、credits、newBalance、minPayment as Double InputDataoldBalance、charges、crdits CalculateNewValuesoldBalance、charges、credits、newBal、MinpMDispNewbal、MinpMTW当我编译时,结果为零。不知道为什么。任何帮助都将不胜感激。我是个书呆子,在这个问题上花的时间比我应该花的时间多得多。我可以用最少的代码在一个函数中完成这一切。另一个值得注意的是,为什么会得到零,是因为变量的作用域是封闭的,在运行块之后是不可访问的。我没有否决你的意见,但是你的代码在一个函数之外使用了dim,从我们有限的信息来看,这个函数可以使它们成为全局变量,这是不好的。至少,它们是类范围内的变量,无论是否实际使用,都会被声明并分配内存插槽。最初的提问者最好将他的所有参数标记为byref,然后修改这些值。
Public Class Form1


Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCompute.Click


    Dim oldBalance, charges, credits, newBalance, minPayment As Double
    InputData(oldBalance, charges, credits)
    CalculateNewValues(oldBalance, charges, credits, newBalance, minPayment)
    DisplayData(newBalance, minPayment)


End Sub

Sub InputData(ByRef oldBalance As String, ByRef charges As String, ByRef credits As String)
    oldBalance = CDbl(txtOldBal.Text)
    charges = CDbl(txtCharges.Text)
    credits = CDbl(txtCredits.Text)
End Sub

Sub CalculateNewValues(ByRef oldBalance As Double, ByRef charges As Double, ByRef credits As Double, ByRef newBalance As Double, ByRef minPayment As Double)
    Dim rate As Double = 1.015
    newBalance = (rate * oldBalance) + charges - credits
    If newBalance <= 20 Then
        minPayment = newBalance
    Else
        minPayment = ((newBalance - 20) * 0.1) + 20
    End If

End Sub

Sub DisplayData(newBalance As Double, minPayment As Double)
    lblMinPay.Text = minPayment.ToString("C")
    lblNewBal.Text = newBalance.ToString("C")
End Sub

End Class