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
我正在练习一本书中的练习,并且卡在了一个特定的例子上。完全公开,这不是作业或测试,而只是我练习了一本名为 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