在VB.net中乘以0会导致?

时间:2017-02-19 09:50:22

标签: arrays string vb.net

我刚刚开始参加VB.net课程,这对班级来说不错,但我在这里苦苦挣扎。我应该做一个“覆盖计算器”我基本上完成了所有事情,除了一件事。我必须根据3个方框计算总费用(长*宽*深* 2.45D)

目前的代码如下:

Private Sub btnDisplayCost_Click(sender As Object, e As EventArgs) Handles btnDisplayCost.Click
    Dim strCalculatedCost2 As Decimal
    Dim strLength As Decimal
    Dim strWidth As Decimal
    Dim strAvgDepth As Decimal
    Dim CalculatedCost2 As Integer
    strCalculatedCost2 = Convert.ToInt32(strCalculatedCost2)
    strCalculatedCost2 = strAvgDepth * strWidth * strLength
    lblCalculatedCost2.Text = strCalculatedCost2.ToString("C")
    lblCalculatedCost2.Visible = True

我遇到的问题是即使没有“2.45D”,如果我尝试单击显示成本,它只显示$ 0.00任何有关我做错的帮助?

1 个答案:

答案 0 :(得分:0)

您忘了向strLengthstrWidthstrAvgDepth个变量提供任何值。只需执行Dim strLength As Decimal将导致它被设置为默认值,即零。因此,目前正在发生的是:

strAvgDepth * strWidth * strLength

总会导致:

0 * 0 * 0

如果你应该从文本框中获取值,那么你应该使用Decimal.TryParse()来验证输入为小数,并避免例外。

Dim strLength As Decimal
Dim strWidth As Decimal
Dim strAvgDepth As Decimal

If Decimal.TryParse(TEXTBOXNAME.Text, strLength) AndAlso _
    Decimal.TryParse(TEXTBOXNAME.Text, strWidth) AndAlso _
     Decimal.TryParse(TEXTBOXNAME.Text, strAvgDepth) Then

    Dim strCalculatedCost2 As Decimal = strAvgDepth * strWidth * strLength
    lblCalculatedCost2.Text = strCalculatedCost2.ToString("C")
    lblCalculatedCost2.Visible = True

Else
    MessageBox.Show("Input must be numerical!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If

将每个TEXTBOXNAME替换为您想要从中获取相应值的每个文本框。