Do..While ...循环

时间:2011-03-14 21:05:18

标签: vb.net while-loop

我的学习手册对以下代码做了如下陈述:

* * “计算机评估Do ...循环语句中的循环条件,以确定是否应该处理循环指令。在这种情况下,inputales<> String.Empty condition将输入销售变量的contenst与String.Empty值进行比较。如您所知,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

2 个答案:

答案 0 :(得分:6)

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

  

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

正如@xanatos所说:恭喜你在别人的文字中抓住你的第一个错误。所以问题的+1,我会说这对你的编程生涯很​​有希望。 : - )

答案 1 :(得分:1)

是的,你是对的。当inputsales非空时,将执行循环。说明错了。