2016-04-03 42 views
0

我正在做一個Visual Basic中的學校項目(使用visual studio 2015),我有點卡住了。VB - 比較兩個標籤中的數字

我的目標是創建一個抽獎,玩家從複選框中選擇6個數字,然後他生成6個隨機數(1-49),最後,這兩組應該進行比較和需要的結果是正確猜測的數字的數量。

我有兩個結果(猜測數字,生成的數字)保存在兩個不同的標籤。

的複選框本身是genereted這樣的:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 



    lev = 20 
    tt = 0 
    For j = 1 To 50 
     tt = tt + 1 
     n = n + 1 
     box(j) = New CheckBox 
     box(j).Name = "box(" & Str(j) & ")" 
     If n = 11 Then lev = lev + 110 : n = 1 : tt = 1 
     box(j).Left = lev 
     box(j).Parent = Me 
     box(j).Top = tt * 20 
     box(j).Tag = j 
     box(j).Text = j 
     box(j).Visible = True 
    Next 
    box(50).Enabled = False 
End Sub 

第一個標記(猜號)充滿這樣(我不張貼整個代碼)

For j = 1 To 50 
      If box(j).Checked = True Then Label9.Text = Label9.Text + " " + box(j).Text 
Next 

,第二個(生成的數字)像這樣:

Do 
     rn = rg.Next(1, 50) 
     If Not r.Contains(rn) Then 
      r.Add(rn) 
     End If 
    Loop Until r.Count = 6 

    Label1.Text = r(0).ToString + " " + r(1).ToString + " " + r(2).ToString + " " + r(3).ToString + " " + r(4).ToString + " " + r(5).ToString 

任何想法如何比較存儲在這些標籤和得到結果(正確猜測數字的數量)。

在此先感謝

+0

當你將*數字*放入標籤中時,它們會變成文本,這是非常不同的東西。將每個組放入* one *標籤都會產生一長串文本,並且難以比較。使用像數組或列表的變量(即不要將它們粘在一起,如果你知道你需要它們單獨比較) – Plutonix

+0

謝謝,我會嘗試。所以,如果我將值存儲到數組中,我如何比較它們以獲取正確猜測數字的數量? – DDT

+0

你會如何比較一個真正的彩票和一組中獎號碼?一次一個 - 一個循環。 – Plutonix

回答

0

您可以通過拆分標籤的Text屬性爲字符串數組和將它們轉換爲整數數組比較標籤號碼。首先,雖然代碼中存在一個小問題,那就是將猜測的數字添加到標籤中。

For j = 1 To 50 
      If box(j).Checked = True Then Label9.Text = Label9.Text + " " + box(j).Text 
Next 

的「」應該被移動到該行的結束,因爲在目前,標籤總會有空間和一個具有如下功能混亂開始。所以你應該有 -

For j = 1 To 50 
      If box(j).Checked = True Then Label9.Text = Label9.Text + box(j).Text + " " 
Next 

好的。下面的函數將兩個文本標籤分割成它們自己的數組,並通過猜測進行循環,並檢查生成的數字中是否包含任何數字。然後它返回匹配的數量。

Private Function ComparePicks() As Integer 
    Dim numbersMatched As Integer 
    Dim picks(5) As Integer 
    Dim generatedNumbers(5) As Integer 
    For i As Integer = 0 To 5 
     picks(i) = CInt(Split(Label9.Text, " "c)(i)) 
    Next 
    For i As Integer = 0 To 5 
     generatedNumbers(i) = CInt(Split(Label1.Text, " "c)(i)) 
    Next 
    For i As Integer = 0 To 5 
     If generatedNumbers.Contains(picks(i)) Then 
      numbersMatched += 1 
     End If 
    Next 
    Return numbersMatched 
End Function