我不知道为什么这个程序不起作用。我得到一个随机数,计算机选择什么类型的偶数或奇数?
Dim a As New Random()
Dim b As Integer
Dim ca As Integer
b = a.Next(0, 10)
Debug.Print(b)
ca = b / 2
If ca = 0 Then
Debug.Print("Even")
Else
Debug.Print("Odd")
End If
答案 0 :(得分:12)
你弄乱了你的操作员。
您使用了分区/
,但您想使用模运算符Mod
。
请注意:在C#中它是%
。在VB.Net中,它是Mod
参考:http://msdn.microsoft.com/en-us/library/se0w9esz(v=vs.100).aspx
Dim a As New Random()
Dim b As Integer
Dim ca As Integer
b = a.Next(0, 10)
Debug.Print(b)
ca = b Mod 2
If ca = 0 Then
Debug.Print("Even")
Else
Debug.Print("Odd")
End If
为什么您的代码无法正常工作:
罪魁祸首确实是你的if语句。您正在检查b / 2
的结果是否为0.但只有b
本身为0时才会出现这种情况。每个大于0的数字除以一半大于零。
您的代码看起来像是要检查除法的其余部分,因此使用模运算符的解决方案。
答案 1 :(得分:6)
你也可以检查低位,如果它是在数字是奇数,如果它是关闭数字是偶数。使用函数:
Dim a As New Random()
Dim b As Integer
b = a.Next(0, 10)
Debug.WriteLine(b)
If isEven(b) Then
Debug.WriteLine("even")
Else
Debug.WriteLine("odd")
End If
Private Function isEven(numToCheck As Integer) As Boolean
Return (numToCheck And 1) = 0
End Function
编辑:可能比mod快,但没有检查过。
答案 2 :(得分:0)
Private sub command1_click()
Dim a as integer
a = text1.text
If a mod 2=0 then
Print a & " is even"
Else
Print a & "is odd"
Endif
End sub