困惑为什么数字之间的比较返回true

时间:2013-05-29 12:33:16

标签: vb.net if-statement

我使用以下代码检查我的健康状况是否超过允许的最大健康状况:

    Public Sub healthCheck()

    If Player.CurrentHealth > Player.MaxHealth Then
        MsgBox(Player.CurrentHealth & "&" & Player.MaxHealth)
        Player.CurrentHealth = Player.MaxHealth
        MsgBox(Player.CurrentHealth & "&" & Player.MaxHealth)

    ElseIf (0 > Player.CurrentHealth) Then

        Player.CurrentHealth = 0

    End If

End Sub

我添加了消息框以进行调试,它们输出以下字符串:

第一个消息框= 8& 20

第二个消息框= 20& 20

如果第一个告诉我那个

currenthealth = 8 

maxhealth = 20

为什么它甚至进入if-construction? 据我所知,8不高于20

编辑:

这似乎只发生在10马力以下!所以10/20它没有输入if而只是跳过if-construction,但是在9/20它重置为20/20(好像比较返回true)

2 个答案:

答案 0 :(得分:2)

您的健康变量可能是字符串:

MsgBox("8" > "20") // Outputs True

纠正
Dim currentHealth As Int32 = Int32.Parse(Player.CurrentHealth)
Dim maxHealth As Int32 = Int32.Parse(Player.MaxHealth)

If currentHealth > maxHealth Then
    MsgBox(currentHealth & "&" & maxHealth)
    Player.CurrentHealth = PLayer.MaxHealth
    currentHealth = maxHealth
    MsgBox(currentHealth & "&" & maxHealth)

ElseIf (0 > currentHealth) Then

    Player.CurrentHealth = 0

End If

答案 1 :(得分:1)

评论中回答了这个问题:

  

显示currenthealth和maxhealth的声明。如果它们是字符串,可以解释你在这里看到的内容。 - Kate Gregory

     亲爱的主啊,你是对的!忽视这一点我感到很惭愧.. - Gutanoth