2015-11-05 64 views
0

我正在写一个非常简单的体重计算器代码 - 用户输入体重和身高,我计算该身高的标准体重,代码将该体重与基于标准体重范围进行比较if/elseif块。在VB体重计算器中的语法

标准体重正确返回,但代码总是返回“正常体重”,无论身高体重比如何。我是VB新手,所以我的直觉是它是一个相对简单的语法问题。

Dim dbHeight, dbWeight, dbStWeight As Double 
    dbHeight = CDbl(tbxHeight.Text) 
    dbWeight = CDbl(tbxWeight.Text) 
    dbStWeight = (dbHeight * 30.48 - 105)/0.454 
    lblFeedback.Text = ("Your standard weight is " & dbStWeight) 

    If (dbStWeight * 0.9 <= dbWeight <= dbStWeight * 1.1) Then 
     lblResult.Text = ("Normal Weight") 

    ElseIf (dbStWeight * 1.1 < dbWeight <= dbStWeight * 1.2) Then 
     lblResult.Text = ("Over Weight") 

    ElseIf (dbStWeight * 0.8 <= dbWeight < dbStWeight * 0.9) Then 
     lblResult.Text = ("Under Weight") 

    ElseIf (dbWeight > dbStWeight * 1.2) Then 
     lblResult.Text = ("Very overweight") 

    ElseIf (dbWeight < dbStWeight * 0.8) Then 
     lblResult.Text = ("Very underweight") 

    End If 
    lblFeedback.Refresh() 
    lblResult.Refresh() 
+0

VB不支持多条件相当你写他们的方式。 'dbStWeight * 0.9 <= dbWeight <= dbStWeight * 1.1'需要被分成单独的条件,或者是AND和OR。这适用于前三个IF报表。 –

+0

@Martin - 如果dbStWeight * 0.9 <= dbWeight AND dbWeight <= dbStWeight * 1.1会起作用吗? – Josh

+1

如果这是两个条件,是的。否则,你隐式地对布尔子表达式(沿着FALSE <5的行)进行一些二进制操作。 –

回答

0
Private Sub btOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btOK.Click 

    Dim dbHeight, dbWeight, dbStWeight As Double 
    dbHeight = CDbl(tbxHeight.Text) 
    dbWeight = CDbl(tbxWeight.Text) 
    dbStWeight = (dbHeight * 30.48 - 105)/0.454 
    StWeight.Text = ("Your standard weight is " & dbStWeight) 

    If (dbStWeight * 0.9 <= dbWeight) AndAlso (dbWeight <= dbStWeight * 1.1) Then 
     Result.Text = ("Normal Weight") 

    ElseIf (dbStWeight * 1.1 <= dbWeight) AndAlso (dbWeight <= dbStWeight * 1.2) Then 
     Result.Text = ("Overweight") 

    ElseIf (dbStWeight <= dbWeight) AndAlso (dbWeight < dbStWeight * 0.9) Then 
     Result.Text = ("Underweight") 

    ElseIf (dbWeight > dbStWeight * 1.2) Then 
     Result.Text = ("Very overweight") 

    ElseIf (dbWeight < dbStWeight * 0.8) Then 
     Result.Text = ("Very underweight") 

    End If 

End Sub