VB.NET 从固定金额存款输出每月余额的簿记练习

VB.NET book exercise that outputs monthly balances from a fixed amount deposit

我正在练习一本书中的练习,并且卡在了一个特定的例子上。完全公开,这不是作业或测试,而只是我练习了一本名为 Introduction to Visual Basic 的书的章节,所以我立即向那些认为这是一个愚蠢问题的人道歉。问题是这样的,

假设固定数量 钱在每个月初存入一个 每月支付 6% 复利的投资。每个之后 已存款,

新余额] = 1.005 * [一个月前的余额] + [固定金额].

编写一个请求固定数量的程序 存款作为输入并在每个之后显示余额 前四笔存款。

这是输出的附加图像

我真的不知道如何处理这个问题。

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim amount As Decimal
    amount = CDec(txtAmount.Text)
    lstResults.Items.Add(MonthlyInvestment(amount)).ToString("C")
  End Sub

  Function MonthlyInvestment(amount As Decimal) As Decimal
    Dim balance As Decimal = amount
    Dim newBalance As Decimal
    Dim interestRate As Decimal = 0.06
    newBalance = 1.005 * balance + amount
    Return newBalance
  End Function
End Class

您使用的 TextBox 控件不是接受数值的最佳选择。我的第一个建议是将其换成 NumericUpDown 控件。您可以在此处找到文档:https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.numericupdown

之后你应该做的是设置一个 For/Next 循环,从第 2 个月(因为第 1 个月是初始存款)循环到第 n 个月。在你的循环之外,你应该声明一个变量来保存当前的总数,在你的循环内部,你应该根据当前的总数进行计算。

使用 NumericUpDown 查看此示例:

Dim total = NumericUpDown1.Value
lstResults.Items.Add($"Month 1: {total:c}")
For month = 2 To 4
    total = 1.005 * total + NumericUpDown1.Value
    lstResults.Items.Add($"Month {month}: {total:c}")
Next

Fiddle: https://dotnetfiddle.net/2CK432

此外,请注意,1.005 不是 6%。不确定这是否是您的代码中的错字。

这里有一个例子你可以参考。

Private count As Decimal
Private monthCount As Integer = 1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If count = 0 Then
        count = CDec(txtAmount.Text)
        lstResults.Items.Add($"Month {monthCount}:   " + count.ToString("C"))
        monthCount += 1
    Else
        lstResults.Items.Add($"Month {monthCount}:   " + MonthlyInvestment(count).ToString("C"))
        monthCount += 1
    End If
End Sub
Function MonthlyInvestment(balance As Decimal) As Decimal
    count = 1.005 * balance + CDec(txtAmount.Text)
    Return count 
End Function

我的测试结果。

大家好,感谢您的帮助。我回去查看我以前的工作,确实如某人所说,分解这些问题我能够看到一种模式。这就是我所做的

Public Class Form1 dim balance As Double = 0 '全局变量,我们需要在项目中随处访问它 Private Sub Button1_Click(sender As Object, e As EventArgs) 句柄 Button1.Click Dim originalDeposit As Double = CDbl(txtAmount.Text) '清除列表框并在输入新平衡时设置 0 以平衡 lstResults.Items.Clear() 余额 = 0</p> <pre><code>' Option 1 displays results 'lstOutput.Items.Add("Month 1: " & newBalance(originalDeposit).ToString("C")) 'lstOutput.Items.Add("Month 2: " & newBalance(originalDeposit).ToString("C")) 'lstOutput.Items.Add("Month 3: " & newBalance(originalDeposit).ToString("C")) 'lstOutput.Items.Add("Month 4: " & newBalance(originalDeposit).ToString("C")) ' Option 2 - displays results For i As Integer = 1 To 4 lstResults.Items.Add("Month " & i & ": " & newBalance(originalDeposit).ToString("C")) Next

结束子 '计算新余额。这个函数被调用了 4 次。它增加了平衡 '和 returns 它的新值 函数 newBalance(originalDeposit As Double) As Double 余额 = 1.005 *(余额)+ originalDeposit Return余额 结束函数

结束Class