2014-11-04 40 views
0

我遇到了与我的应用程序有关的问题。当计算按钮点击事件应根据用户输入的5位数邮政编码显示适当的运费。为了有效,邮政编码必须包含5位数字,前3位数字必须是“605”或“606”。 “605”的运费为25美元,“606”为30美元。如果邮政编码无效,则显示适当的信息。Visual Basic - 基于5位数的邮政编码验证显示邮递

我只要检查邮政编码“605”或“606”我进不到5个位数的给予零,而不是错误消息的价格,所以我失去了一些东西。

任何帮助或指导表示赞赏。 感谢。

Option Explicit On 
Option Strict On 
Option Infer Off 

Public Class frmMain 

Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click 
    Me.Close() 
End Sub 

Private Sub txtZip_Enter(sender As Object, e As EventArgs) Handles txtZip.Enter 
    txtZip.SelectAll() 
End Sub 

Private Sub txtZip_TextChanged(sender As Object, e As EventArgs) Handles txtZip.TextChanged 
    lblShipping.Text = String.Empty 
End Sub 

Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click 

    Dim strZip As String 
    Dim dblShipping As Double 

    strZip = txtZip.Text 

    'Make sure zip code is 5 digits 
    If strZip.Length = 5 Then 
     'Calculate the shipping based on first 3 digits 
     If strZip Like "605##" Then 
      dblShipping = 25.0 
     ElseIf strZip Like "606##" Then 
      dblShipping = 30.0 
     Else 
      MessageBox.Show("Invalid ZIP code, must be 5 digits and begin with 605 or 606") 
     End If 
    End If 

    'display shipping charge 
    lblShipping.Text = dblShipping.ToString("N2") 

End Sub 

末级

+1

现在请学习如何正确地缩进代码,以便它不清楚的地方执行的路径;就像现在写的那样,阅读起来非常困难。 (你的'显示运费'代码在'if'循环之外,所以无论计算是否完成,它都会执行。) – 2014-11-04 01:10:53

回答

0

你的Else是不正确的实际上是缩进的,所以它似乎属于外部If strZip.Lenth = 5 Then陈述,而不是内部陈述If strZip Like "505##" Then。我已编辑您的问题以纠正此缩进错误。

你可以看到你没有指定当其他输入由用户提供的代码路径,并在.NET数值默认为0声明时(即dblShipping0.0默认值,因此,零你看到)。

我的建议是(注意,失败的早期回报)

Dim lengthValid As Boolean = strZip.Length.Equals(5) ' this is necessary as the = operator in VB.NET does not return a boolean value 
Dim prefixValid As Boolean = strZip.StartsWith("605") OrElse strZip.StartsWith("607") 
If Not lengthValid OrElse Not prefixValid Then 
    MessageBox.Show("Invalid ZIP code, must be 5 digits and begin with 605 or 606") 
    Return 
Else 
    If strZip.StartsWith("605") Then 
     dblShipping = 25 
    Else 
     dblShipping = 30 
    End If 
End If 
+0

谢谢感谢您的帮助。我看到我在缩进中做了什么错误。当我不停地移动物品并尝试新的东西时,它从一开始就抛弃了所有东西,使它变得更糟。我了解当输入其他输入时代码路径出错的位置。 – Chevygal1969 2014-11-04 14:09:30