このプログラムが機能しない理由がわかりません。乱数を取得すると、コンピューターはそれが偶数か奇数かを選択しますか?
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
あなたはあなたのオペレーターを台無しにしています。
除算/
を使用しますが、モジュロ演算子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より大きいすべての数値を半分で割ると、0より大きいことになります。
コードは、除算の余りをチェックしたいように見えます。したがって、モジュロ演算子を使用したソリューションです。
下位ビットをチェックすることもできます。オンの場合は奇数、オフの場合は偶数です。関数の使用:
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よりも速いかもしれませんが、チェックしていません。
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