2015-05-10 39 views
-1

好吧,我的问题如下:我认为我编码的一切正确的执行部分,我做我的选择的情况下,我想第一个3味道只花费55美分,但是当我做我的代码它总是使得65美分不管我选择什么冰淇淋类型和我不知道如何使它改变,我想我已经正确的,但它不是工作为什么我的选择案例不起作用

Public Class frmJoeyIceCreamParlour 
    Const MIN_SCOOPS = 1 
    Const MAX_SCOOPS = 9 
    Const BASIC_FLAVOUR = 0.55 
    Const PREMIUM_FLAVOUR = 0.65 
    Const TOPPING = 0.6 
    Const DEEZ_NUTS = 0.5 
    Const WHIPPED_CREAM = 0.65 
    Public scoopEntry As Single 
    Public scoopType As Double 
    Public runningTotal As Double 

    Private Sub frmJoeyIceCreamParlour_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     lstFlavours.Items.Add("Vanilla") 
     lstFlavours.Items.Add("Chocolate") 
     lstFlavours.Items.Add("Strawberry") 
     lstFlavours.Items.Add("Mango") 
     lstFlavours.Items.Add("Bananna") 
     lstFlavours.Items.Add("Grape") 
     lstFlavours.Items.Add("Mint Chocolate Chip") 
    End Sub 

    Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click 
     If txtScoops.Text = Nothing Then 
      MessageBox.Show("Please enter a value in the scoops category.") 
      txtScoops.Focus() 

     ElseIf Not IsNumeric(txtScoops.Text) Then 
      MessageBox.Show("Entry must be numeric! Please try again.") 
      txtScoops.Focus() 

     ElseIf txtScoops.Text < MIN_SCOOPS Or txtScoops.Text > MAX_SCOOPS Then 
      MessageBox.Show("Please enter a number between 1 and 9 scoops.") 
      txtScoops.Focus() 

     ElseIf lstFlavours.SelectedItem = Nothing Then 
      MessageBox.Show("Please select a flavour.") 

     ElseIf rdoNoTopping.Checked = False And rdoOneTopping.Checked = False And rdoTwoTopping.Checked = False And rdoThreeTopping.Checked = False Then 
      MessageBox.Show("Please select the amount of toppings you would like.") 

     Else 
      Dim number As Integer = 7 
      Select Case number 

       Case 1 To 3 
        scoopType = BASIC_FLAVOUR 
       Case 4 To 7 
        scoopType = PREMIUM_FLAVOUR 

        runningTotal = scoopType * Double.Parse(txtScoops.Text) 
      End Select 

      If rdoOneTopping.Checked = True Then 
       runningTotal = runningTotal + TOPPING 

      ElseIf rdoTwoTopping.Checked = True Then 
       runningTotal = runningTotal + (TOPPING * 2) 

      ElseIf rdoThreeTopping.Checked = True Then 
       runningTotal = runningTotal + (TOPPING * 3) 

      End If 

      If chkWhippedCream.Checked = True Then 
       runningTotal = runningTotal + WHIPPED_CREAM 

      End If 

      If chkNuts.Checked = True Then 
       runningTotal = runningTotal + DEEZ_NUTS 

      End If 
      lblOutputTotal.Text = (FormatCurrency(runningTotal)) 
     End If 
    End Sub 
End Class 
+0

欢迎使用计算器查找选定的索引。请阅读[问]。提示:尝试使用导致问题的简洁代码片段。如果问题在选择的情况下,我们不需要孔方法代码。 –

+0

...然后,当您得到答案时,请点击旁边的复选标记以表示您的感谢。 – Plutonix

回答

0

你有它硬编码到通过线正上方的Select case number语句中使用7:Dim number As Integer = 7。您应该通过做类似Dim number As Integer = lstFlavours.SelectedIndex

Dim number As Integer = lstFlavours.SelectedIndex 
Select Case number 

    Case 1 To 3 
     scoopType = BASIC_FLAVOUR 
    Case 4 To 7 
     scoopType = PREMIUM_FLAVOUR 
End Select 

runningTotal = scoopType * Double.Parse(txtScoops.Text) 
+0

好吧,我做了你所问的,现在前3个显示为0.00美元,其他显示为0.65美元,你有解决方案吗? @travis –

+0

是的,将'runningTotal = scoopType * Double.Parse(txtScoops.Text)'块移出select语句。正如现在写的,只有4到7个案例符合该代码。我会用一个完整的例子来更新我的答案,一会儿两个变化。 – Travis