2011-12-23 39 views
0
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文件中取出單詞,然後將它們放到一個標籤中,唯一的問題是;這些詞有時會重複。我只希望每個單詞出現一次,但是它們會出現多次。我的代碼有什麼問題? (VB)

回答

2

您每次檢查隨機單詞時都使用整個單詞數組。我對random.Next()的理解不是它在每次調用時都使用一個從0-n開始的不同隨機數,而是從0-n生成一個新的數字,這可能會在n次出現之前重複出現。

要解決這個問題,請在每次使用單詞時調整陣列 - 將發現的那個移到最後並調整範圍-1。

1

從數組中刪除單詞一旦檢索以避免重複,我會使用List而不是數組來做到這一點,祝你好運!