В моем учебном пособии содержится следующее утверждение о приведенном ниже коде:
* * «Компьютер оценивает условие цикла в 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