确定三个数字的最小值/最大值

时间:2015-08-02 16:03:07

标签: if-statement vbscript scripting qtp

我一直在尝试使用If ... Then条件执行VBScript。 这就是我要展示的内容。

我必须显示3条消息:一条用于最高号码,第二条用于最低号码,第三条用于显示消息"The numbers are the same"(如果它们全部相等)。 我需要让三个弹出窗口一个接一个地出现。

我试过这个:

Option explicit

Dim Gn, Sn, En

Gn= inputbox("enter first number")
Sn= inputbox("enter second number")
En =inputbox("enter third number")

If ((Gn > Sn) AND (Gn > En)) then
Msgbox ("The Highest Number Is =" & Gn)
End if
If ((En =Gn) AND (En =Sn)) then
Msgbox ("The Numbers Are Equal =" & En)
End if
If ((Sn<Gn) AND (Sn <En))then
Msgbox ("The Lowest Number Is =" & Sn)
End If

如果第一个变量的值满足所有条件,则此代码会成功执行,但仍然存在问题。它不会逐个显示三条消息。例如,如果Gn&gt; EnSn,然后成功运行。

还有另一种方法,但它太冗长而复杂。

Option explicit

Dim Gn, Sn, En

Gn= inputbox("enter first number")
Sn= inputbox("enter second number")
En =inputbox("enter third number")

If ((Gn > Sn) AND(Sn > En ) AND (Gn > En)) then
Msgbox ("The Highest number is = " & Gn & "The lowest number is = " & Sn & "The numbers are not equal" )
end if

我将不得不尝试所有的排列和组合,以使上述方法起作用。

请帮忙!

1 个答案:

答案 0 :(得分:1)

如果您希望消息框始终,请不要将它们放在If语句中。首先确定您的最小/最大值,然后无条件地显示您的消息框。

如果你创建了几个函数(MinMax)来帮助你,那会更容易:

Function Min(x, y)
    If x < y Then Min = x Else Min = y
End Function

Function Max(x, y)
    If x > y Then Max = x Else Max = y
End Function

然后您可以轻松确定最小和最大数字,以及所有三个数字是否相等:

intMin = Min(Min(Gn, Sn), En)
intMax = Max(Max(Gn, Sn), En)
fEqual = (intMin = intMax)

MsgBox "Highest number is " & intMax
MsgBox "Lowest number is "  & intMin
If fEqual Then MsgBox "All three numbers are equal"

最后,您需要确保将输入视为数字而不是字符串。 InputBox()将返回一个字符串,因此您需要将该值转换为数字,否则您的比较将无法正确显示。

如果您想假设输入数字,只需转换返回值:

' Assume integers are being entered. If floating point, use CDbl() instead.
Gn = CLng(inputbox("enter first number"))

否则,您可以测试返回值以查看它是否为数字,然后正确转换它:

Gn = inputbox("enter first number")

If Not IsNumeric(Gn) Then
    MsgBox Gn & " is not numeric."
Else
    Gn = CLng(Gn)
End If
相关问题