我必须设计一个Windows Forms应用程序,该应用程序可以计算给定组的百老汇门票的总费用。用户输入组中有多少人,并计算总成本。我们必须使用case语句来完成此任务。
百老汇票务团体折扣如下:
我遇到的麻烦是让某些情况下使用给定的算法。前两组(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,这是上一个组的票证价格。
我感觉自己缺少一些东西,但是我的教科书和教授几乎没有涵盖这些类型的陈述
答案 0 :(得分:1)
您所有的>=
案例都没有用,实际上是有害的。例如,如果您达到Case Is <= 12
,那么您就已经知道自己与Case Is <= 8
不匹配,因此您知道该值大于或等于9,所以测试的重点是什么?那个吗这意味着该案例是无用的,但更糟糕的是,Case Is >= 9
将匹配9以上的任何值,因此您的其他任何案例都将无法进行测试。
摆脱所有那些无用的情况,只保留<=
个。根据具体情况,如果Case Else
大于99,您可能还需要在底部添加decNumber
。
答案 1 :(得分:1)
为什么可以在使用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