2012-02-20 75 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 

照顾该解决方案的数量越大,那么你强加的限制,否则程序进入无限循环

相关问题