Арифметическая задача при использовании операторов Case - PullRequest
0 голосов
/ 14 марта 2019

Я должен разработать приложение для Windows Forms, которое рассчитывает общую стоимость билетов на Бродвей для данной группы.Пользователь вводит, сколько человек в группе, и рассчитывается общая стоимость.Мы должны использовать заявления случая, чтобы достигнуть этого.

Скидки на групповые билеты на Бродвей предоставляются следующим образом:

  • 1-8 = 249
  • 9-12 = 219
  • 13-24 =199
  • 25-99 = 169

У меня проблемы с получением определенных случаев для использования данной арифметики.Первые две группы (1-8 и 9-12) работают нормально, но затем программа продолжает рассчитывать, как если бы групповая скидка на 13-24 года все еще составляла 219 долларов.Это то же самое для группы 25-99.

Мой код (txtNumber - объект текстового поля, lbltotal - общая метка)

Option Strict On

Public Class frm_broadway_ticket_group
    Private Sub btnCalculate_Click(sender As Object, e As EventArgs) 
      Handles btnCalculate.Click
        Dim decTotal1 As Decimal
        Dim decNumber As Decimal

        decNumber = Convert.ToDecimal(txtNumber.Text)

        Select Case decNumber
            Case Is <= 8
                decTotal1 = decNumber * 249
            Case Is >= 9
                decTotal1 = decNumber * 219
            Case Is <= 12
                decTotal1 = decNumber * 219
            Case Is >= 13
                decTotal1 = decNumber * 199
            Case Is <= 24
                decTotal1 = decNumber * 199
            Case Is >= 25
                decTotal1 = decNumber * 169
            Case Is <= 99
                decTotal1 = decNumber * 169
        End Select

        lbltotal.Text = decTotal1.ToString("C")
    End Sub
End Class

TLDR: я пытаюсь получить группы, которые умножаются на 13-24на 199 и 25-99 групп для умножения на 169. Обе группы будут умножаться только на 219, что является предыдущей ценой группового билета.

У меня такое ощущение, что я что-то упустил, но мой учебник ипрофессор едва освещал эти типы высказываний

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Зачем использовать те, когда вы можете использовать To?

        Case Is <= 8
            decTotal1 = decNumber * 249
        Case 9 To 12
            decTotal1 = decNumber * 219
        Case 13 To 24
            decTotal1 = decNumber * 199
        Case 25 To 99
            decTotal1 = decNumber * 169
1 голос
/ 14 марта 2019

Все ваши >= дела бесполезны и фактически вредны.Например, если вы доберетесь до Case Is <= 12, то вы уже знаете, что вы не соответствовали Case Is <= 8, так что вы точно знаете, что значение больше или равно 9, так какой смысл вообще проверять это?Это означает, что этот случай бесполезен, но, что еще хуже, Case Is >= 9 будет соответствовать чему-либо выше 9, поэтому ни один из ваших других случаев никогда не будет проверен.

Избавьтесь от всех этих бесполезных случаеви просто оставь эти <=.В зависимости от специфики, вы можете добавить Case Else внизу, если decNumber больше 99.

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