Do..While ...循环

Wan*_*abe 8 vb.net while-loop

我的学习书对下面的代码做了如下陈述:

** "计算机评估Do ...循环语句中的循环条件,以确定是否应该处理循环指令.在这种情况下,inputales <> String.Empty条件将输入销售变量的最大容量与String进行比较.Empty value.如你所知,String.Empty值表示零长度或空的字符串,如果inputsales变量为空,则循环条件的计算结果为True,计算机处理循环指令.*另一方面,如果是inputales变量不为空,循环条件计算为false,计算机跳过循环指令.

基于代码,我认为它是相反的:...虽然inputales值不为空,但它应该评估为true并处理循环,如果它是空的,它应该计算为false并跳过循环?请看下面.非常感谢你的帮助!

Option Explicit On
Option Strict On

Imports System.Globalization


Public Class SalesForm

    Private Sub exitButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles exitButton.Click
        Me.Close()
    End Sub

    Private Sub calcButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles calcButton.Click
        Const prompt As String = "Enter a sales amount. Click cancel to end."
        Const title As String = "Sales Entry"
        Dim inputsales As String
        Dim sales As Decimal
        Dim salesCounter As Integer
        Dim salesaccumulator As Decimal
        Dim salesAverage As Decimal
        Dim isconverted As Boolean

        inputsales = InputBox(prompt, title, "0")

        **Do While inputsales <> String.Empty
            isconverted = Decimal.TryParse(inputsales, NumberStyles.Currency, NumberFormatInfo.CurrentInfo, sales)

            If isconverted = True Then
                salesCounter = salesCounter + 1
                salesaccumulator = salesaccumulator + sales
            Else
                MessageBox.Show("Please re-entere the sales amount.", "sales Express", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
            inputsales = InputBox(prompt, title, "0")
        Loop**

        If salesCounter > 0 Then
            salesAverage = salesaccumulator / Convert.ToDecimal(salesCounter)
            averageLabel.Text = salesAverage.ToString("C2")
            Label2.Text = salesCounter.ToString
        Else
            averageLabel.Text = "0"
        End If
    End Sub
End Class
Run Code Online (Sandbox Code Playgroud)

Aas*_*set 6

你肯定是对的,这本书是错的(希望,作者只是偶然地颠倒了真/假;否则,我会得到另一本书).我建议的更正(添加一些):

如您所知,String.Empty值表示零长度或空字符串.如果inputsales变量不为空,则循环条件求值为True,并且计算机处理循环指令(然后跳回到循环的顶部并重新评估条件).另一方面,如果inputsales变量空,则循环条件求值为False,并且计算机跳过循环指令(并继续循环后的第一个语句).

正如@xanatos所说:恭喜你在其他人的文本中捕获你的第一个bug.所以问题的+1,我会说这对你的编程生涯很​​有希望.:-)