正如其他评论者所指出的那样,数字的“布尔”比较可能没有按照您的想法进行。您需要每个案例将其卷轴值与所有其他卷轴值进行比较,这不会使语法比您的If
结构短得多。有多种数学解决方案(如果您的数据良好,Nathan_Sav 提出的解决方案应该可以使用)。
但是,您询问是否有更好的方法,并且为了保持代码简单,一种方法是将卷轴值分配给结果数组或某种集合。
一个明显的集合是一个Dictionary
可以包含每个唯一卷轴值的频率计数和数量的集合。如果您已将您声明ReelNum
为一个数组,那么代码将非常短,但保留您的各个变量,您需要您的 mainSub
和另一个来构建 Dictionary。所以你的主要子将是:
Dim count As Dictionary(Of Integer, Integer)
count = New Dictionary(Of Integer, Integer)()
BuildResults(count, ReelNum1)
BuildResults(count, ReelNum2)
BuildResults(count, ReelNum3)
BuildResults(count, ReelNum4)
BuildResults(count, ReelNum5)
Select Case count.Values.Max()
Case 1 : Console.Write("None the same")
Case 2 : Console.Write("Two the same")
Case 3 : Console.Write("Three the same")
Case 4 : Console.Write("Four the same")
Case 5 : Console.Write("All the same")
Case Else : Console.Write("Who knows?")
End Select
和构建例程:
Private Sub BuildResults(ByRef count As Dictionary(Of Integer, Integer), ByVal newNum As Integer)
If Not count.ContainsKey(newNum) Then count.Add(newNum, 0)
count(newNum) = count(newNum) + 1
End Sub
我不确定这是否是一个教育项目,但以防万一,我已经包含了一个Select Case
这样你就可以看到它是如何工作的。