我必须设计一个Windows窗体应用程序来计算给定组的百老汇门票的总成本。用户输入该组中的人数并计算总成本。我们必须使用案例陈述来实现这一目标。
百老汇团体团体折扣如下:
我遇到的问题是让某些案例使用给定的算法。前两组(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,这是之前的组票价。
我有一种感觉,我错过了什么,但我的教科书和教授几乎没有涵盖这些类型的陈述
你所有的>=
病例都没有用,实际上是有害的。例如,如果你到达Case Is <= 12
然后你已经知道你没有匹配Case Is <= 8
所以你知道这个值大于或等于9的事实,那么根本测试的点是什么?这意味着那个案例没用,但更糟糕的是,Case Is >= 9
将匹配9以上的任何东西,所以你的其他案例都不会被测试。
摆脱所有这些无用的案件,并保持<=
。根据具体情况,您可能还想在底部添加Case Else
,以防decNumber
大于99。
为什么在使用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