Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net VB-比较两个标签中的数字_Vb.net_Visual Studio_Visual Studio 2015 - Fatal编程技术网

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

Vb.net VB-比较两个标签中的数字,vb.net,visual-studio,visual-studio-2015,Vb.net,Visual Studio,Visual Studio 2015,我正在用Visual Basic做一个学校项目(使用Visual studio 2015),我有点被卡住了 我的目标是创建一个彩票,玩家从复选框中选择6个数字,然后生成6个随机数字(1-49),最后,这两组数字应该进行比较,需要的结果是正确猜测的数字 我将两个结果(猜测的数字、生成的数字)保存在两个不同的标签中 复选框本身一般如下所示: Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

我正在用Visual Basic做一个学校项目(使用Visual studio 2015),我有点被卡住了

我的目标是创建一个彩票,玩家从复选框中选择6个数字,然后生成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
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
第一个标签(猜测的数字)是这样填写的(我不会发布全部代码)

第二个(生成的数字)如下所示:

   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
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
知道如何比较这些标签中存储的数字并得到结果(正确猜测的数字的数量)吗


提前感谢

您可以通过将标签的文本属性拆分为字符串数组并将其转换为整数数组来比较标签中的数字。首先,虽然您的代码有一个小问题,将猜测的数字添加到标签中

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

当你把数字放在标签上时,它们变成了文本,这是完全不同的。将所有组放在一个标签中会产生一个很长的文本字符串,很难进行比较。使用数组或列表之类的变量(如果您知道需要单独比较,请不要将它们粘在一起)谢谢,我会试试。所以,如果我将值存储到数组中,如何比较它们以获得正确猜测的数字?如何将一张真正的彩票与一组中奖数字进行比较?一次一个-循环。选择乐透号码还有其他较短的方法: