【问题标题】:Comparing two arrays in vb.net比较 vb.net 中的两个数组
【发布时间】:2013-07-22 10:11:30
【问题描述】:

我需要对两个数组进行反向交集操作,并将结果保存在不同的数组中

例如:数组 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 项目需要它

【问题讨论】:

  • 好吧,你的问题就在那里;那不是 VB.NET。
  • 我刚刚在本地系统中尝试了 C++ 中的逻辑。目前没有可用的 vb.net。只是逻辑会有所帮助
  • 如果你被允许在你的(我假设的)家庭作业中使用 System.Linq 命名空间,它会让这一切变得容易得多。
  • 谢谢。澄清一下,这不是家庭作业
  • 那我错了。 Tim Schmelter 的答案使用 System.Linq.Enumerable,除非您特别想学习该算法,否则这是您目前最好的选择。

标签: vb.net


【解决方案1】:

我不明白 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()

【讨论】:

  • 如何将结果存储在整数数组中
  • 当我尝试将内容显示为 MsgBox(bOnly(0)) 时,它显示的是 0 而不是 4
  • @Dineshbabu: MsgBox(bOnly(0)) 为我打开一个带有4 的消息框。
  • 那我再发一个问题
  • 感谢您的提示。完成
【解决方案2】:

如果你不能使用 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

【讨论】:

  • 那是相交的。他们想要反向相交,即除了。 =)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多