VB 2010中的计算问题

时间:2012-04-02 00:21:32

标签: vb.net

我无法弄清楚我的代码问题在哪里。我的计算完成工作直到最后一种情况(CASE IS> 8),结果连续返回0.00。我确信它的东西很小,因为缺乏经验,像我这样的新手不见了。谢谢您的帮助!

  

'变量声明

Convert.ToInt32(txtAttending.Text)
Dim decAttending = txtAttending.Text

If IsNumeric(txtAttending.Text) And txtAttending.Text <= 16 Then
    Select Case txtAttending.Text
        Case Is = 1
            decCost = 695 * decAttending
        Case 2 To 4
            decCost = 545 * decAttending
        Case 5 To 8
            decCost = 480 * decAttending
        Case Is > 8
            decCost = 395 * decAttending
    End Select
Else
    MsgBox("Please double check that your input is a number not greater than 16", , "Input Error")

End If

If radYes.Checked = True Then
    decFinalCost = (decCost - (decCost * 0.15))
    lblRepeatDiscount.Visible = True
    decDiscount = (decCost * 0.15)
    lblDiscount.Text = decDiscount.ToString("C")
    lblTotalPrice.Text = decFinalCost.ToString("C")

Else
    decFinalCost = decCost
    lblTotalPrice.Text = decFinalCost.ToString("C")
End If

4 个答案:

答案 0 :(得分:4)

Convert.ToInt32(txtAttending.Text)不会就地转换文本,因为您的第一行代码似乎断言;这是一个无操作。 txtAttending.Text的类型为System.String,并且始终具有该类型。

您的案例陈述应该更像是这样:

If IsNumeric(txtAttending.Text) Then

    Dim decAttending = Convert.ToInt32(txtAttending.Text)

    Select Case decAttending
        Case Is = 1
            decCost = 695 * decAttending
        Case 2 To 4
            decCost = 545 * decAttending
        Case 5 To 8
            decCost = 480 * decAttending
        Case 9 To 16
            decCost = 395 * decAttending
    End Select
Else
    MsgBox("Please double check that your input is a number not greater than 16", , "Input Error")

此版本在执行数字操作时始终使用System.Int32变量decAttending

答案 1 :(得分:1)

您不应该先将文本转换为数字吗?我会改变这些界限:

If IsNumeric(txtAttending.Text) And Val(txtAttending.Text) <= 16 Then
    Select Case Val(txtAttending.Text)

请注意,此代码段无效:Convert.ToInt32(txtAttending.Text),您正在将文本转换为整数,但结果不会存储在变量中。

此外,如果数字是&lt; = 0?

会发生什么

答案 2 :(得分:1)

Case Else
        decCost = 395 * decAttending

答案 3 :(得分:0)

除了提到的建议外,它似乎很棒,但是 你确定你所做的所有代码都已编写,或者是否存在操作的抛出代码 Diccost,或者disattending,请向我们保证。