2012-02-20 79 views
0

我有兩個數組有條件地從VB中的兩個其他數組創建一個數組?

a={a,b,c,d} 
b={1,2,3,4} 

現在我想創造出至少應該包含一個數字編號和字母的其餘部分的第三陣列,該代碼將生成唯一的用戶名,因此不應重複選擇的圖案,其存在於主陣列

Darray={abc1, acd2,...} 

我團結ab

Dim c As String() = Barray.Union(Aarray).ToArray() 

     Dim Carray(0 To 8) As String 

我想while循環這裏有做,但不知道怎樣才能通過這個條件,它應該得到至少一個數字,不應該從Darray

do while (confused....) 
     Dim rnd As New Random 

     For i = 0 To 8 

      Carray(i) = c(rnd.Next(0, c.Length)) 

     Next 
loop 

回答

0

重複模式創建一個表單,並粘貼這個鱈魚。它生成100個代碼,也許這是你想要的?在表單上添加一個列表框並取消註釋ADD行以查看結果。

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    Dim aa() As String = {"a", "b", "c", "d"} 
    Dim an() As String = {"1", "2", "3", "4"} 
    Dim da As New Collection 
    Dim rnd As New Random 
    Dim i As Integer = 0 
    While i < 100 
     Dim j1 As Integer = rnd.Next(4) 
     Dim j2 As Integer = rnd.Next(4) 
     Dim rs As String = "" 
     For k As Integer = 1 To 4 
      If k = j2 Then 
       rs += an(j1) 
      Else 
       Dim j3 As Integer = rnd.Next(4) 
       rs += aa(j3) 
      End If 
     Next 
     If Not da.Contains(rs) Then 
      da.Add(rs, rs) 
      ' ListBox1.Items.Add(rs) 
      i += 1 
     End If 
    End While 
End Sub 
+0

嗨馬丁,謝謝你的回答它的作品,但你能解釋我的東西在這裏,如果我不想它重複從一個相同的字符然後如何要通過這個條件,它不是必要的,但它是一個複雜的方法,所以在未來它可能會有所幫助 – Ironsun 2012-02-23 22:38:40

0

更新USER1167053,回答 「if i dont want it to repeat」:

替換FOR與德路:

 Dim k As Integer = 0 
     While k < 4 
      If k = j2 Then 
       rs += an(j1) 
       k += 1 
      Else 
       Dim j3 As Integer = rnd.Next(4) 
       If Not rs.Contains(aa(j3)) Then 
        rs += aa(j3) 
        k += 1 
       End If 
      End If 
     End While 

照顧該解決方案的數量越大,那麼你強加的限制,否則程序進入無限循環

相關問題