我的学习书籍对下面的代码做出了以下说明:
**“计算机在Do...Loop语句中评估循环条件以确定是否应处理循环指令。在这种情况下,inputsales <> String.Empty条件将输入销售变量的内容与String.Empty值进行比较。如您所知,如果inputsales变量为空,则String.Empty值表示长度为零或空字符串,此时循环条件评估为True,计算机处理循环指令。另一方面,如果inputsales变量不为空,则循环条件评估为false,计算机跳过循环指令。
根据代码,我认为相反的是正确的:当inputsales的值不为空时,它应该评估为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