我的代码出了什么问题? (VB)

时间:2011-12-23 19:38:48

标签: vb.net arrays string random label

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)

该代码应该从txt文件中获取单词,然后将它们放入标签中,唯一的问题是;这些话有时会重复。我只希望每个单词出现一次,但它们会出现多次。

2 个答案:

答案 0 :(得分:2)

每次检查随机单词时,您都在使用整个单词数组。我对random.Next()的理解并不是每次调用它时都会使用0-n之间的不同随机数,而是从0-n生成一个新数字,这可能会在n次发生之前重复。

要解决此问题,请在每次使用单词时调整数组 - 将找到的单词移动到结尾并调整范围-1。

答案 1 :(得分:1)

一旦检索到从数组中删除单词以避免重复,我会使用List而不是数组来做到这一点,祝你好运!