1

このコードのどこが間違っているのか誰かが指摘できるかどうか疑問に思っていました. Nouns という ArrayList を使用しており、 から選択した単語を という別の単語に追加するコードがありArrayListます。ArrayListNewArray()

問題は、Sub が label_click イベントから呼び出されると、コードがある NewArray に保存されている単語を保持しないことNewArray.Add(WordChosen)です。これは、ブレークポイントとステッピングを使用してデバッグすることで見つかりました。

この部分のコードは次のとおりです。

Sub GetNoun()

    Dim Nouns As ArrayList = New ArrayList(16)
    Nouns.Add("France")
    Nouns.Add("Bird")
    Nouns.Add("Doctor")
    Nouns.Add("City")
    ...

    Dim lblArray As Label() = {lblOne, lblTwo, lblThree, lblFour}

Start:
    Dim WordChosen As String
    WordChosen = Nouns(Random.Next(16))

    If NewArray.Contains(WordChosen) Then
        GoTo Start
    Else
        Dim LabelChosen As Label
        LabelChosen = lblArray(Random.Next(4))
        LabelChosen.Text = WordChosen
        Nouns.Remove(WordChosen)
        NewArray.Add(WordChosen)
    End If
End Sub

動的な ArrayList 内に単語を保持するにはどうすればよいですか? これが理にかなっており、重複していないことを願っていますが、アイデアに行き詰まっています。

4

1 に答える 1

2

リストはローカル変数です。

関数を呼び出すたびに、新しい変数が取得されます。

それをクラスに移動して単一のフィールドを作成し、コンストラクターで初期化する必要があります。

于 2013-09-03T17:39:37.967 に答える