2016-04-03 5 views
0

私はVisual Basicで学校プロジェクトを行っています(ビジュアルスタジオ2015を使用しています)、ちょっと固まってしまいました。VB - 2つのラベルの数字を比較する

私の目標は、チェックボックスから6つの数字を選び、6つの乱数(1 - 49)​​を生成し、最後に2つのセットを比較し、必要な結果が正しく推測された数字の数。

2つの異なるラベルに保存された2つの結果(推測された数字、生成された数字)があります。

チェックボックス自体は、次のように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 

2つ目の(満たされている最初のラベル(推測番号)

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

*数字*をlablesに入れると、テキストとなりますが、これはかなり異なるものです。各グループをすべて* one *ラベルにすると、1つの長い文字列が作成され、比較が難しくなります。配列やリストのような変数を使用する(つまり、それらを別々に比較する必要がある場合は、それらを一緒に接着しないでください) – Plutonix

+0

ありがとう、私は試してみます。だから私は配列に値を格納する場合、私はそれらを比較して、正しく推測された数の数を取得するのですか? – DDT

+0

あなたは本当の宝くじのチケットと勝利の数字のセットをどう比較しますか?一度に1つ - ループ。 – Plutonix

答えて

0

おかげであなたは、文字列の配列にラベルのテキストプロパティを分割し、配列を整数に変換することにより、ラベル内の数値を比較することができます。最初に、ラベルに推測された数字を追​​加するコードには小さな問題があります。

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 

Ok。以下の関数は、2つのテキストラベルをそれぞれの配列に分割し、推測をループし、生成された数値に数値が含まれているかどうかをチェックします。その後、一致の数を返します。

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 
関連する問題