2013-07-22 81 views
0

我需要做反向交叉口操作与两个阵列并将结果保存在一个不同的阵列比较两个阵列在vb.net

例如:数组A {1,2,3};阵列B {1,2,3,4,5,6}合成阵列应该是{4,5,6}

我尝试了下面的逻辑,但没有工作

int k = 0; 
int a[2] = {1,10}; 
int p[10]; 
int roll[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 

for (int i = 0; i < 2; i++) 
{ 
    for (int j = 1; j <= 10; j++) 
    { 
     if (a[i] == roll[j]) 
     { 
      break; 
     } 
     else 
     { 
      p[k] = 0; 
      p[k] = roll[j]; 
      k++; 
     } 
    } 
} 

我需要它为我的vb.net项目

+6

嗯,有你的问题就在那里;这不是VB.NET。 –

+0

我刚刚在本地系统中尝试了C++中的逻辑..现在没有vb.net可用。只需逻辑将帮助 –

+0

如果您可以在您的(我假设)作业中使用System.Linq命名空间,它会使这一切变得更加简单。 –

回答

7

我不明白如何C#代码是与您的VB.NET问题有关,如果你只想找到integers这是在一个阵列,而不是在另一个,使用Enumerable.Except

Dim intsA = {1, 2, 3} 
Dim intsB = {1, 2, 3, 4, 5, 6} 
Dim bOnly = intsB.Except(intsA).ToArray() 
+0

如何将结果存储在整数数组中 –

+0

结果已经是'Integer()'。 –

+0

当我尝试显示内容为MsgBox(bOnly(0))它显示0而不是4 –

1

尝试是这样的,如果你不能使用Linq:

Function RevIntersect(arr1() As String, arr2() As String) As String() 
    Dim sResult, aux As New List(Of String)() 

    aux.AddRange(arr1) 
    aux.AddRange(arr2) 

    For Each elem As String In aux 
     If (Not arr1.Contains(elem) OrElse Not Arr2.Contains(elem)) AndAlso _ 
     Not sResult.Contains(elem) Then 
      sResult.Add(elem) 
     End If 
    Next 

    Return sResult.ToArray() 
End Function 
+0

这是相交。他们想要反向相交,即除了。 =) –

+0

现在它被纠正了 – SysDragon