2016-09-21 12 views
0

ケーキのローター配列からランダムに名前を生成するプログラムを作成しようとしています。私はそれを働かせるように見えません。現在、メッセージボックスには、配列に格納されている名前ではなく乱数が表示されます。助けてください!ランダムに配列から要素を生成するVB

Public Class Form1 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     Dim strNames(18) As String 
     Dim frances, emma, piotr, jake, jess, jonah, john, flynn, will, nick As String 

     strNames(0) = "frances" 
     strNames(1) = "emma" 
     strNames(2) = "piotr" 
     strNames(3) = "jake" 
     strNames(4) = "jess" 
     strNames(5) = "jonah" 
     strNames(6) = "john" 
     strNames(7) = "flynn" 
     strNames(8) = "will" 
     strNames(9) = "nick" 


     Dim rnum As Integer 
     Dim temp As String 
     For i = 0 To 18 
      strNames(i) = i 
     Next i 

     Randomize() 
     For i = 0 To 9 
      rnum = Int(Rnd() * (UBound(strNames) - LBound(strNames) + 1) + LBound(strNames)) 
      temp = strNames(i) 
      strNames(i) = strNames(rnum) 
      strNames(rnum) = temp 
     Next i 


     For i = 0 To 9 
      MessageBox.Show(strNames(i)) 
     Next i 

    End Sub 
+1

を動作するように見えます違いは 'rnum'は' i'に依存しなければならないということです)。 [VBで配列をシャッフルする方法](http://stackoverflow.com/q/23576469/11683)または[vb.netで文字列の配列をシャッフルする](http://stackoverflow.com/q/29358857)を参照してください。/11683)。 – GSerg

答えて

2

For i = 0 To 18 
     strNames(i) = i 
    Next i 

は数にstrNamesの値を設定しています。

を取り出し、あなたが配列からランダムな名前を選ぶように見えません、あなたは奇妙な、おそらく間違った方法(キーでは、配列をシャッフルするように見える

Dim strNames(18) As String 
    Dim frances, emma, piotr, jake, jess, jonah, john, flynn, will, nick As String 
    frances = "frances" 
    emma = "emma" 
    piotr = "piotr" 
    jake = "jake" 
    jess = "jess" 
    jonah = "jonah" 
    john = "john" 
    flynn = "flynn" 
    will = "will" 
    nick = "nick" 
    strNames(0) = frances 
    strNames(1) = emma 
    strNames(2) = piotr 
    strNames(3) = jake 
    strNames(4) = jess 
    strNames(5) = jonah 
    strNames(6) = john 
    strNames(7) = flynn 
    strNames(8) = will 
    strNames(9) = nick 


    Dim rnum As Integer 
    Dim temp As String 


    Randomize() 
    For i = 0 To 9 
     rnum = Int(Rnd() * (UBound(strNames) - LBound(strNames) + 1) + LBound(strNames)) 
     temp = strNames(i) 
     strNames(i) = strNames(rnum) 
     strNames(rnum) = temp 
    Next i 


    For i = 0 To 9 
     MessageBox.Show(strNames(i)) 
    Next i 
+0

ありがとう – fox

関連する問題