如何在vb.net编码中正确显示年份?

如何在vb.net编码中正确显示年份?,vb.net,loops,Vb.net,Loops,我是使用visual basic的初学者,在应用程序中正确显示年份时遇到问题。我的应用程序应该显示费率:3%-7%,然后在每个费率下年份应该显示:1-5,余额应该显示每年的总额。我得到的是3%的利率,1-5年,每年结余。第六年的利率为4%,而不是第六年的1-5和余额。5%的利率显示第7年和该年的余额,依此类推。 仅供参考:我需要保留For…Next语句,并将Do…Loop语句合并为“年” 为了更好地理解我要解释的内容,我插入了一些图片。我非常感谢你的帮助 代码如下: Dim dblDe

我是使用visual basic的初学者,在应用程序中正确显示年份时遇到问题。我的应用程序应该显示费率:3%-7%,然后在每个费率下年份应该显示:1-5,余额应该显示每年的总额。我得到的是3%的利率,1-5年,每年结余。第六年的利率为4%,而不是第六年的1-5和余额。5%的利率显示第7年和该年的余额,依此类推。 仅供参考:我需要保留For…Next语句,并将Do…Loop语句合并为“年”

为了更好地理解我要解释的内容,我插入了一些图片。我非常感谢你的帮助

代码如下:

    Dim dblDeposit As Double
    Dim dblBalance As Double
    Dim intYear As Integer = 1

    Double.TryParse(txtDeposit.Text, dblDeposit)

    txtBalance.Text = "Rate" & ControlChars.Tab &
        "Year" & ControlChars.Tab & "Balance" &
        ControlChars.NewLine

    ' Calculate and display account balances. 
    For dblRate As Double = 0.03 To 0.07 Step 0.01
        txtBalance.Text = txtBalance.Text &
            dblRate.ToString("P0") & ControlChars.NewLine

        Do
            dblBalance = dblDeposit * (1 + dblRate) ^ intYear
            txtBalance.Text = txtBalance.Text &
                ControlChars.Tab & intYear.ToString &
                ControlChars.Tab & dblBalance.ToString("C2") &
                ControlChars.NewLine
            intYear = intYear + 1
        Loop While intYear < 6

    Next dblRate
Dim dbldeposite为双精度
双精度DBL天平
整数形式的年份=1
Double.TryParse(txtDeposit.Text,dblDeposit)
txtBalance.Text=“Rate”&ControlChars.Tab&
“年”&控制字符选项卡和“余额”&
控制字符新行
'计算并显示帐户余额。
对于dblRate为双精度=0.03至0.07步骤0.01
Text=txtBalance.Text&
dblRate.ToString(“P0”)和ControlChars.NewLine
做
dblBalance=dblDeposit*(1+dblRate)^intYear
Text=txtBalance.Text&
ControlChars.Tab和intYear.ToString&
ControlChars.Tab和dblBalance.ToString(“C2”)&
控制字符新行
intYear=intYear+1
年<6时循环
下一个dblRate

您需要在每次迭代
Do
循环之前重置
intYear

    Dim dblDeposit As Double
    Dim dblBalance As Double
    Dim intYear As Integer = 1

    Double.TryParse(txtDeposit.Text, dblDeposit)

    txtBalance.Text = "Rate" & ControlChars.Tab &
        "Year" & ControlChars.Tab & "Balance" &
        ControlChars.NewLine

    ' Calculate and display account balances. 
    For dblRate As Double = 0.03 To 0.07 Step 0.01
        txtBalance.Text = txtBalance.Text &
            dblRate.ToString("P0") & ControlChars.NewLine

        intYear = 1 ' Reset intYear here before each loop

        Do
            dblBalance = dblDeposit * (1 + dblRate) ^ intYear
            txtBalance.Text = txtBalance.Text &
                ControlChars.Tab & intYear.ToString &
                ControlChars.Tab & dblBalance.ToString("C2") &
                ControlChars.NewLine
            intYear = intYear + 1
        Loop While intYear < 6

    Next dblRate
    Dim depositAmount As Decimal
    If Not Decimal.TryParse( txtDeposit.Text, NumberStyles.Currency, CultureInfo.CurrentCulture, depositAmount ) Then
        MsgBox( "Invalid input" ).
        Exit Sub
    End If
    Dim sb As New StringBuilder()
    sb.Append( "Rate    Year    Balance" ).AppendLine() ' Tab characters are embedded in the string literal.
    ' Calculate and display account balances. 
    For rate As Double = 0.03 To 0.07 Step 0.01
        sb.AppendFormat( "  {0:P0}", rate ).AppendLine();
        Dim year As Integer = 1 ' Reset intYear here before each loop
        Do
            Dim balance As Decimal = depositAmount * ( 1 + rate ) ^ year ' I think you should add extra parenthesis to make it clear which value the `^ year` is being applied to.
            sb.AppendFormat( "  {0:D}   {1:C2}", year, balance ).ToString()
            year = year + 1
        Loop While year < 6
    Next rate

    txtBalance.Text = sb.ToString()