Do..While ... Loop

В моем учебном пособии содержится следующее утверждение о приведенном ниже коде:

* * «Компьютер оценивает условие цикла в Do ... Состояние цикла, чтобы определить, следует ли обрабатывать инструкции цикла. В этом случае условие inputsales <> String.Empty сравнивает содержимое входной переменной продаж со значением String.Empty. Как вы знаете, значение String.Empty представляет собой строку нулевой длины или пустую строку, если переменная inputsales пуста, условие цикла оценивается как Истина, и компьютер обрабатывает инструкции цикла. * Если, с другой стороны, переменная inputsales не пуста, условие цикла оценивается как ложное, и компьютер пропускает инструкции цикла.

Основываясь на коде, я думаю, что все наоборот: ... что while значение inputsales не пустое, оно должно оцениваться как истина и обрабатывать цикл, а если оно пусто, оно должно оцениваться как ложное и пропускать цикл? См. Ниже. Большое спасибо за помощь!

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
8
задан Bill the Lizard 18 September 2012 в 14:13
поделиться