【问题标题】:VB Mortgage Calculator not displaying correct outputVB Mortgage Calculator 未显示正确的输出
【发布时间】:2016-10-12 11:21:02
【问题描述】:

我的教授要求我们使用子程序创建一个抵押贷款计算器。我能够在不使用 sub 或 ByVal / ByRef 的情况下通过一键单击功能完成这项任务。但是,当我将它分成几个不同的函数和子函数时,我有 0 个错误但是当我点击按钮并计算时,3 个显示输出全部为 0。我假设它在我的 Function calc 块或我的btnCalculate_Click Sub。

Public Class frmMortgage

    Dim annualRateOfInterest, monthlyPayment, begBalance As Double 'Declaring variables
    Dim intForMonth, redOfPrincipal, endBalance As Double

    Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click

        Call getInput(annualRateOfInterest, monthlyPayment, begBalance)

        Call displayOutput(intForMonth, redOfPrincipal, endBalance)

    End Sub

    Sub getInput(ByVal annualRateOfInterests As Double, ByVal monthlyPayment As Double, ByVal begBalance As Double) 'Values input into txt boxes
        annualRateOfInterest = CDbl(txtInterest.Text) / 100 'Change number entered into a percentage
        monthlyPayment = CDbl(txtPayment.Text)
        begBalance = CDbl(txtBalance.Text)
    End Sub

    Function calc(ByVal annualRateOfInterest As Double, ByVal monthlyPayment As Double, ByVal begBalanceintForMonth As Double, ByVal redOfPrincipal As Double, ByVal endBalance As Double)
        Return intForMonth = (annualRateOfInterest / 12) * begBalance 'Take percentage divided by 12 times beginning balance
        Return redOfPrincipal = monthlyPayment - intForMonth
        Return endBalance = begBalance - redOfPrincipal
    End Function

    Sub displayOutput(ByRef intForMonth As Double, ByRef redOfPrincipal As Double, ByRef endBalance As Double)
        mtbMonth.Text = CDbl(intForMonth) 'Display the calculated data into correct textboxes.
        mtbROP.Text = CDbl(redOfPrincipal)
        mtbEndBalance.Text = CDbl(endBalance)
    End Sub

End Class

【问题讨论】:

  • 您根本没有使用calc 函数。另一个是,使用Call 有点多余。你可以在没有它的情况下调用你的函数/子。
  • 如何将它添加到我的点击子中?当我尝试调用或引用它时,我得到错误并且程序不会运行。
  • 一个函数应该只返回一个值。注意你的代码。您返回 3,在这种情况下,它只会返回 intForMonth,这是它看到的第一个返回值。你得到的错误是什么?
  • 我试过调用 calc(intForMonth, redOfPrincipal, endBalance) 错误是 BC30455 Argument not specified for parameter。
  • 我应该将函数 calc 中的 3 个返回值拆分为 3 个单独的函数吗?并在我的点击子中分别调用每个?

标签: vb.net


【解决方案1】:

我刚刚将它们全部合并到一个 Sub 中。

Private Sub btnCalculate_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnCalculate.Click
    ComputeMortgage(Val(txtInterest.Text), Val(txtPayment.Text), Val(txtBalance.Text))
End Sub

Sub ComputeMortgage(ByVal Interest As Double, ByVal monthlyPayment As Double, ByVal begBalance As Double)
    annualRateOfInterest = Interest / 100

    'COMPUTATION
    intForMonth = (annualRateOfInterest / 12) * begBalance 'Take percentage divided by 12 times beginning balance
    redOfPrincipal = monthlyPayment - intForMonth
    endBalance = begBalance - redOfPrincipal

    'DISPLAYING
    mtbMonth.Text = intForMonth 'Display the calculated data into correct textboxes.
    mtbROP.Text = redOfPrincipal
    mtbEndBalance.Text = endBalance

End Sub

【讨论】:

  • 有很多不需要铸造的铸造正在进行......这是多余的
  • 谢谢!这很好用,现在尝试比较和对比以了解所有正在发生的事情。 Val 调用是如何工作的?
  • 如果可行,请单击检查按钮。 Val() 将传递给它的值作为数字返回。这是为了验证并确保传递的值是数字。如果传递了一个带有无效数字值的字符串,它将返回零。
  • 我有最后一个问题,Private Sub btnCalculate_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnCalculate.Click。 ByVal Sender 和 ByVal e 线路如何工作?我没有看到它们在其他任何地方被宣布或理解它们的作用。
猜你喜欢
  • 1970-01-01
  • 2019-01-05
  • 2013-05-15
  • 2023-03-26
  • 1970-01-01
  • 2021-10-01
  • 2017-04-04
  • 2020-12-22
  • 1970-01-01
相关资源
最近更新 更多