Как правильно рассчитать среднее? - PullRequest
0 голосов
/ 30 апреля 2019

Это проект, над которым я работал в течение дня или около того, и я не могу заставить его работать так, как я хочу.Я знаю, что мне нужны счетчик и аккумулятор, но я просто не могу понять, как правильно их использовать при расчете среднего.

Я пытался вычислить среднее значение путем деления аккумулятора (маккума) на MovingRating ион просто возвращает странный вывод, который выглядит как бесконечный символ.Итак, я попытался разделить счетчик по MovingRating и все же не повезло.

Public Class Form1
    'declaring module level variables
    Dim maccum As Integer
    Dim mCount As Integer
    Dim totalRatings As Short
    Dim MovieRating As Short

    Private Sub btnRateIt_Click(sender As Object, e As EventArgs) Handles btnRateIt.Click
        'Declaring variables
        Dim MovieDescription As String
        Dim MovieRating As Integer
        Dim strFirstSentence As String
        Dim strSecSentence As String
        Dim thankYou As String
        Dim ratingMovie As String
        Dim Stars As String

        'Input
        thankYou = "Thank you for rating this"
        ratingMovie = "movie with"
        Stars = "stars"

        'Process the data
        MovieDescription = UCase(txtMovieDscpt.Text)
        MovieRating = updwnStars.Value
        mCount = mCount + 1
        maccum = maccum + 1
        Label6.Text = maccum
        Label7.Text = MovieRating

        'Ouput
        strFirstSentence = thankYou & " " & MovieDescription
        strSecSentence = ratingMovie & " " & MovieRating & " " & Stars
        lblUserRating.Text = strFirstSentence
        lblRatingDisplay.Text = strSecSentence

    End Sub

    Private Sub btnAvgRating_Click(sender As Object, e As EventArgs) Handles btnAvgRating.Click
        'Declaring variables
        Dim averageRating
        'Process the data
        averageRating = mCount / MovieRating
        'Output the processed data
        lblAvgRating.Text = averageRating.ToString
    End Sub
End Class

Я ожидаю, что результат деления MovieRating будет средним.Я попытался установить 5,0 и добавить 2 к счетчику.Итак, когда я пытаюсь получить среднее значение, оно просто выдает 5/2 = ouput

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

В вашем коде много дублированных элементов, которые, как мне кажется, не должны (или не должны) присутствовать.

Я думаю, вы были сбиты с толку из-за нескольких объявлений.

Посмотрите на этот код, он в основном такой же, как ваш, но с удаленными дублированными битами

'declaring module level variables
Dim mCount As Integer
Dim totalRatings As Decimal

Private Sub btnRateIt_Click(sender As Object, e As EventArgs) Handles btnRateIt.Click
    'Declaring variables
    Dim thankYou As String = "Thank you for rating this {0}"
    Dim ratingMovie As String = "movie with {0} stars"

    'Process the data
    mCount = mCount + 1
    totalRatings += updwnStars.Value

    Label6.Text = mCount.ToString()
    Label7.Text = updwnStars.Value.ToString()

    'Ouput
    lblUserRating.Text = String.Format(thankYou, UCase(txtMovieDscpt.Text))
    lblRatingDisplay.Text = String.Format(ratingMovie, updwnStars.Value)
End Sub

Private Sub btnAvgRating_Click(sender As Object, e As EventArgs) Handles btnAvgRating.Click
    'Declaring variables
    Dim averageRating As Decimal

    'Process the data
    averageRating = totalRatings / mCount ' Average is calculated by Sum divided by the Count

    'Output the processed data
    lblAvgRating.Text = averageRating.ToString
End Sub
0 голосов
/ 30 апреля 2019

Сначала вы объявляете MovieRating как Short, а в своей программе вы заменяете его на Integer.Я предполагаю, что при расчете используется переменная Class Scope, а не значение Sub scoped.

Также, пожалуйста, используйте Option Strict On

...