使用多个条件单case语句
内我有5个号码和想要测试如果他们中的3相同,所以我写了这个:使用多个条件单case语句
Select Case Reel1Num
Case (Reel2Num And Reel3Num) Or (Reel2Num And Reel4Num) Or (Reel2Num And Reel5Num) Or (Reel3Num And Reel4Num) Or (Reel3Num And Reel5Num) Or (Reel4Num And Reel5NUm)
ThreeNums = +1
lbl3OfSame.Text = "Three Of Same: " & ThreeNums
End Select
但它似乎并没有回到我想要的结果。我知道我可以使用类似:
If (Reel1NUm = Reel2Num And Reel1Num = Reel3Num) Or... Then
ThreeNums = +1
lbl3OfSame.Text = "Three Of Same: " & ThreeNums
End If
,但似乎像这样更多的写作比我觉得我需要的,我想比较的金额做。
有没有更简单的方法来做到这一点?
正如其他评论者所指出的,数字的“布尔”比较可能不是做什么,你觉得它在做什么。您需要将每个案例的卷轴值与所有其他卷轴值进行比较,这些值不会比您的If
结构短得多。有各种数学解决方案(如果你的数据是好的,那么由Nathan_Sav提出的解决方案应该可以工作)。
但是,你问是否有更好的方法,并保持代码的简单,一个办法是卷轴值分配给某些类型的结果数组或集合。
一个明显的收集将是一项Dictionary
其中可能包含每一个独特的卷轴值的频率计数和数量。如果你宣布你ReelNum
作为数组那么代码会很短,但保持你的个人的变量,你需要你的主要Sub
和另外一个构建词典。所以,你的主子是:
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
所以你可以看到它是如何工作的。
谢谢,这正是我想要的。现在阅读一本字典是干什么的!谢谢! –
很高兴帮助。看看所有的答案,如果你的问题已经解决,那么请通过'接受'其中一个答案来将你的帖子从未回答的列表中删除。 – Ambie
您可以通过数字并找出组哪些出现三次:
Sub Main
Dim numbers = New List(Of Integer) From {1,2,3,2,4,5,3,6,2,4,7}
Dim numbersAppearingThreeTimes = numbers.GroupBy(Function(i) i) _
.Where(Function(g) g.Count() = 3)
For Each g In numbersAppearingThreeTimes
Console.WriteLine(g.Key)
Next
End Sub
结果:
您在布尔一路上涨 “比较”顶部,即reel2 =真reel3 = true时,你可以使用类似((R2-R3)*(R2-R4)*(R2-R5))= 0也许 –
^^没有工作。无论如何,谢谢 –
他们肯定是数字?如果R 2,R3,R4分别为3和R 5是2,则R2-R3 = 0,R 2 -R 4 = 0和R2-R5 = 1,且0 * 0 * 1 = 0?谢谢, –