Visual Basic中的增量

时间:2014-02-20 18:46:09

标签: vb.net increment

在此之前,让我承认它与我几天前提出的一个问题非常相似,关于其他几个问题,但在使用了我遇到的两个问题的答案之后,我现在正在运行进入另一个问题。此外,不确定标题实际上是否适合我遇到的问题,但似乎可能是代码在程序中的排序问题。

该计划的最终目标是根据添加到配料列表框的配方列表框中的成分以及每种选定成分的数量来计算配方中的卡路里数。我也应该执行几个不同的测试来防止程序崩溃。

  1. 如果数量文本框保留为空,则程序应默认添加1个所选成分。
  2. 如果在文本框中输入了除数字以外的任何内容,程序应显示一个消息框,要求用户输入数字数量。
  3. 我现在的主要问题是,无论我如何尝试调整代码以使其工作,我都无法使TotalCalories增加,所以它不断给我一个0值作为答案。我有点紧张,所以如果它能够解决这个问题而不必重新编写我已经拥有的大部分代码,那就太好了。

    这是我写的代码

    Public Class Form1
    
        Private TotalCalories As Integer = 0
    
        Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
            Dim i As Integer = lstIngredients.SelectedIndex
            Dim Quantity As Double
            Dim intCount As Integer = 0
    
            If Trim(txtQuantity.Text) = "" Then
                Quantity = 1
            Else
                Quantity = Me.txtQuantity.Text
            End If
    
            If IsNumeric(txtQuantity.Text) = False Then
                MessageBox.Show("The quantity entered is not numeric. Please add a numeric quantity.")
            End If
    
            If intCount < Quantity Then
                lstRecipe.Items.Add(Quantity & " " & lstIngredients.Text)
                intCount += 1
            End If
    
            If lstRecipe.Text = "Eggs(each)" Then
                TotalCalories += Quantity * 72
            ElseIf lstRecipe.Text = "Flour(cups)" Then
                TotalCalories += Quantity * 455
            ElseIf lstRecipe.Text = "Milk(cups)" Then
                TotalCalories += Quantity * 86
            ElseIf lstRecipe.Text = "Sugar(cups)" Then
                TotalCalories += Quantity * 774
            ElseIf lstRecipe.Text = "Butter(tablespoons)" Then
                TotalCalories += Quantity * 102
            End If
        End Sub
    
        Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
            lstRecipe.Items.Clear()
            txtQuantity.Clear()
            txtAnswer.Clear()
            TotalCalories = 0
        End Sub
    
        Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
            txtAnswer.Text = TotalCalories
    
        End Sub
    End Class
    

    我也试过这个          如果lstRecipe.text =(数量&amp;“”&amp;“鸡蛋”&amp;“”“(每个)”)那么         ... 但这也不起作用。

1 个答案:

答案 0 :(得分:1)

如果txtQuantity为空,则将Quantity变量设置为1,否则尝试解析键入的值,如果不是数字则返回。同时使用所有整数进行计算,或者如果允许使用十进制值,则对TotalCalories变量也使用double。

如果用户在文本框中键入零

,您还不清楚自己想要做什么
Private TotalCalories As Double = 0

Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
    Dim i As Integer = lstIngredients.SelectedIndex
    Dim Quantity As Double
    Dim intCount As Integer = 0

    If Trim(txtQuantity.Text) = "" Then
        Quantity = 1
    Else if Not Double.TryParse(txtQuantity.Text, Quantity)
        MessageBox.Show("The quantity entered is not numeric. Please add a numeric quantity.")
        Return ' or Exit Sub
    End If

    If intCount < Quantity Then
        lstRecipe.Items.Add(Quantity & " " & lstIngredients.Text)
        intCount += 1
    End If

    If lstRecipe.Text = "Eggs(each)" Then
        TotalCalories += (Quantity * 72)
    ElseIf lstRecipe.Text = "Flour(cups)" Then
        TotalCalories += (Quantity * 455)
    ElseIf lstRecipe.Text = "Milk(cups)" Then
        TotalCalories += (Quantity * 86)
    ElseIf lstRecipe.Text = "Sugar(cups)" Then
        TotalCalories += (Quantity * 774)
    ElseIf lstRecipe.Text = "Butter(tablespoons)" Then
        TotalCalories += (Quantity * 102)
    End If
End Sub

但我认为你需要检查lstIngredients而不是

    If lstIngredients.Text = "Eggs(each)" Then
      ....