Что не так с моим кодом?(VB) - PullRequest
0 голосов
/ 23 декабря 2011
Dim aryName As String() = Nothing
aryName = File.ReadAllLines(Application.StartupPath & "\Random\fnames.txt")

Dim randomWords As New List(Of String)
For i = 0 To aryName.Length - 1
If randomWords.Contains(aryName(i)) = False Then
    randomWords.Add(aryName(i))
End If
Next

Dim random As New Random
Label2.Text = (randomWords(random.Next(0, randomWords.Count - 1)).ToString)

этот код должен брать слова из текстового файла и затем помещать их в метку, единственная проблема; слова иногда повторяются. Я хочу, чтобы каждое слово появлялось один раз, но вместо этого оно появляется несколько раз.

Ответы [ 2 ]

2 голосов
/ 23 декабря 2011

Вы используете весь массив слов каждый раз, когда проверяете случайное слово. Мое понимание random.Next() не в том, что он использует случайное число, отличное от 0-n, каждый раз, когда он вызывается, но генерирует новое число из 0-n, которое может повториться до наступления n раз.

Чтобы исправить это, настраивайте свой массив каждый раз, когда вы используете слово - переместите найденное слово в конец и настройте диапазон-1.

1 голос
/ 23 декабря 2011

Удалите слово из массива после извлечения, чтобы избежать дубликатов, для этого я бы использовал List вместо массива, удачи!

...