2011-11-04 87 views
3

由于某种原因,当我运行这个它只计算为0 我在哪里出错了? :( 用户有3个输入框放置值。从那里这些价值观应该被计算,它永远只能等于0的值。我没有得到任何错误VB代码不计算

Option Strict On 
Public Class Form1 

Private Sub btnCal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCal.Click 

Dim dblPacA, dblPacB, dblPacC, dblAnswerA, dblAnswerB, dblAnswerC, dblGrandTotal As Double 
Dim dblAnswerA1, dblAnswerB1, dblAnswerC1 As Double 

'Packages Retail 
Dim dblPACA_FACTOR As Double = 99 
Dim dblPACB_FACTOR As Double = 199 
Dim dblPACC_FACTOR As Double = 299 

'Rate of each range 
Dim dblTENNINE_FACTOR As Double = 0.8 
Dim dblTWONINE_FACTOR As Double = 0.7 
Dim dblFIVENINE_FACTOR As Double = 0.6 
Dim dblONETEN_FACTOR As Double = 0.5 

Try 
'important calculate 
dblAnswerA1 = dblPacA * dblPACA_FACTOR 
dblAnswerB1 = dblPacB * dblPACB_FACTOR 
dblAnswerC1 = dblPacC * dblPACC_FACTOR 



dblPacA = CDbl(txtPacA.Text) 
dblPacB = CDbl(txtPacB.Text) 
dblPacC = CDbl(txtPacC.Text) 

dblGrandTotal = dblAnswerA + dblAnswerB + dblAnswerC 
lblGrandTotal.Text = "Gran Total:" & (dblGrandTotal.ToString("c")) 
'lblAnswer.Text = dblAnswer.ToString 
'lblAnswer.Text = "PackageA:" & dblAnswerA _ 
' & "PackageB:" & dblAnswerB & "PackageC:" _ 
'& dblAnswerC & "GrandTotal:" & dblGrandTotal 
Catch 
End Try 

If dblPacA >= 0 Then 
If dblPacA < 10 Then 
dblAnswerA = dblAnswerA1 
lblAnswerA.Text = "PackageA:" & dblAnswerA.ToString("c") 
ElseIf dblPacA >= 10 And dblPacA < 20 Then 
dblAnswerA = dblAnswerA1 * dblTENNINE_FACTOR 
lblAnswerA.Text = "PackageA:" & (dblAnswerA.ToString("c")) 
ElseIf dblPacA >= 20 And dblPacA < 50 Then 
dblAnswerA = dblAnswerA1 * dblTWONINE_FACTOR 
lblAnswerA.Text = "PackageA:" & dblAnswerA.ToString("c") 
ElseIf dblPacA >= 50 And dblPacA < 100 Then 
dblAnswerA = dblAnswerA1 * dblFIVENINE_FACTOR 
lblAnswerA.Text = "PackageA:" & dblAnswerA.ToString("c") 
ElseIf dblAnswerA >= 100 Then 
dblAnswerA = dblAnswerA1 * dblONETEN_FACTOR 
lblAnswerA.Text = "PackageA:" & dblAnswerA.ToString("c") 
End If 
Else 
MessageBox.Show("txtPacA must be greater than or equal to 0", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning) 
End If 

If dblPacB >= 0 Then 
If dblPacB >= 10 And dblPacB <= 19 Then 
dblAnswerB = dblAnswerB1 * dblTENNINE_FACTOR 
lblAnswerB.Text = "PackageB:" & dblAnswerB.ToString("c") 
ElseIf dblPacB >= 20 And dblPacB <= 49 Then 
dblAnswerB = dblAnswerB1 * dblTWONINE_FACTOR 
lblAnswerB.Text = "PackageB:" & dblAnswerB.ToString("c") 
ElseIf dblPacB >= 50 And dblPacB <= 99 Then 
dblAnswerB = dblAnswerB1 * dblFIVENINE_FACTOR 
lblAnswerB.Text = "PackageB:" & dblAnswerB.ToString("c") 
Else 
dblAnswerB = dblAnswerB * dblONETEN_FACTOR 
lblAnswerB.Text = "PackageB:" & dblAnswerB.ToString("c") 
End If 
Else 
MessageBox.Show("txtPacB must be greater than or equal to 0", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning) 
End If 

If dblPacC >= 0 Then 
If dblPacC >= 10 And dblPacC <= 19 Then 
dblAnswerC = dblAnswerC1 * dblTENNINE_FACTOR 
lblAnswerC.Text = "PackageC:" & dblAnswerC.ToString("c") 
ElseIf dblPacC >= 20 And dblPacA <= 49 Then 
dblAnswerC = dblAnswerC1 * dblTWONINE_FACTOR 
lblAnswerC.Text = "PackageC:" & dblAnswerC.ToString("c") 
ElseIf dblPacC >= 50 And dblPacC <= 99 Then 
dblAnswerC = dblAnswerC1 * dblFIVENINE_FACTOR 
lblAnswerC.Text = "PackageC:" & dblAnswerC.ToString("c") 
Else 
dblAnswerC = dblAnswerC1 * dblONETEN_FACTOR 
lblAnswerC.Text = "PackageC:" & dblAnswerC.ToString("c") 
End If 
Else 
MessageBox.Show("txtPacC must be greater than or equal to 0", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning) 
End If 

End Sub 
End Class 
+1

步骤通过它在调试器中,看看值。 – SLaks

+0

什么'ToString(“C”)'在做什么? – mkoryak

+0

我看到你使用匈牙利符号..你应该阅读此:http://www.joelonsoftware.com/articles/Wrong.html – mkoryak

回答

1
dblAnswerA1 = dblPacA * dblPACA_FACTOR 

哪里是dblPacA的价值设置它的不是它的0