2010-07-06 188 views
0

我得到「索引超出了數組的範圍」。使用此代碼時出現錯誤:索引超出了數組的範圍

Dim RandomA As String = "aAÀàÁâÄäÅåĀāĂ㥹ǞǟǺǻÃãÄ" 
TextBox1.Text = TextBox1.Text.Replace("a", RandomA((Int(Rnd() * RandomA.Count)) - 1)) 

我無法看到(隨機)索引如何超出範圍?

+0

本,請不要在標題中加入「(VB.NET)」標籤。只留下標籤。另外,還可以看看別人正在使用的標籤。你的太可怕了。 – 2010-07-06 00:31:52

回答

4

Int(Rnd() * RandomA.Count)可能返回0,並且0-1超出邊界。

+0

@Ben:Rnd函數的微軟文檔說「Rnd函數返回的值小於1,但大於或等於零。」 – 2012-11-17 22:28:09

+0

@ OlivierJacot-Descombes:嘗試'Int(Double.Epsilon * RandomA.Count)' – 2012-11-17 22:31:16

+0

它按預期返回0.0。你的解釋是可以的。我只是想解釋'Rnd'函數。 – 2012-11-17 22:39:17

0

這是一個肯定的邊緣條件。 在特定的隨機數條件下,方程評估爲-1。

+0

不好解釋。 – 2012-11-17 22:29:27