2017-02-19 4 views
1

Я только начал работать на курсе VB.net, это не плохо класс, но я боюсь здесь. Я должен сделать «Mulch Calculator». Я сделал в основном все, кроме одного. Я должен рассчитать общую стоимость, основываясь на 3 коробки (длина * ширина * глубина * 2.45D)Умножение на VB.net приводит к 0?

Текущий код выглядит как:

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 ", если я попробую нажать Display Cost, он просто появится с помощью 0.00 $ Любая помощь в том, что я делаю неправильно?

ответ

0

Вы забыли указать свои strLength, strWidth и strAvgDepth переменные любые значения. Просто выполнение 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 с каждым отдельным текстовым полем вы хотите, чтобы получить соответствующее значение из.

+0

@ Не известно: рад, что я мог бы вам помочь! Добро пожаловать в Stack Overflow, я желаю вам удачи в вашем проекте! –

Смежные вопросы