2015-05-10 40 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