Do..while ... Loop - PullRequest
       4

Do..while ... Loop

8 голосов
/ 15 марта 2011

Моя учебная книга делает следующее утверждение о коде ниже:

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

Основываясь на коде, я думаю, что все наоборот: ... что, хотя значение 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 ]

6 голосов
/ 15 марта 2011

Вы определенно правы, а книга ошибочна (надеюсь, автор просто полностью изменил истину / ложь; в противном случае, я бы получил другую книгу). Мое предлагаемое исправление (с несколькими дополнениями):

Как вы знаете, значение String.Empty представляет нулевую длину или пустую строку. Если переменная inputsales имеет значение , а не пусто, условие цикла оценивается как True, и компьютер обрабатывает инструкции цикла (а затем возвращается к началу цикла и повторно оценивает условие). Если, с другой стороны, переменная inputsales пуста , условие цикла оценивается как False, и компьютер пропускает инструкции цикла (и продолжает выполнение первого оператора после цикла).

Как сказал @xanatos: Поздравляем с обнаружением вашей первой ошибки в чужом тексте. Так что +1 за вопрос, и я бы сказал, что это кажется многообещающим для вашей карьеры программиста. : -)

1 голос
/ 15 марта 2011

Да, вы правы.Цикл будет выполнен, когда inputsales не пусто.Описание неверное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...