VB - 比较两个标签中的数字

时间:2016-04-03 21:12:26

标签: vb.net visual-studio visual-studio-2015

我正在使用Visual Basic进行学校项目(使用visual studio 2015),而且我有点卡住了。

我的目标是创建一个彩票,玩家从复选框中选择6个数字,然后他生成六个随机数(1 - 49)​​,最后,应该比较这两个数组,结果是正确猜测数字的数量。

我将两个结果(猜测的数字,生成的数字)保存在两个不同的标签中。

复选框本身就是这样的:

   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

任何想法如何比较存储在这些标签中的数字并获得结果(正确猜测的数字的数量)。

提前致谢

1 个答案:

答案 0 :(得分: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