首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较整数的整数数组VB.NET

问比较整数的整数数组VB.NET
EN

Stack Overflow用户
提问于 2012-02-02 21:41:21
回答 3查看 3.7K关注 0票数 0

基本上我有一个大小不同的整数数组。我需要将每个数字相互比较,并显示哪个数字是重复的。例如:

代码语言:javascript
复制
Dim ints() As Integer = {1,2,2,5,4,6}

出现多次的数字是2。

如何遍历数组并将每个整数与数组中的数字进行比较。我尝试了一个for循环,但是它没有返回我想要的值。我是VB.NET的新手,不能完全理解。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-02 21:55:45

代码语言:javascript
复制
Dim ints() As Integer = {1,2,2,5,4,6}

Dim repeatedNumbers = ints.GroupBy(Function(intValue) intValue) _
                          .Where(Function(grp) grp.Count > 1)

For each grp in repeatedNumbers
    Console.WriteLine("Number {0} is repeated {1} times", grp(0), grp.Count)
Next

这段代码的作用是:

  • 我们首先调用GroupBy,它根据项的值对项进行分组。该函数获取分组键,在本例中,我们只需按数组本身的值进行分组。此调用返回一系列组。数组中的每个唯一值都有一个组。该组包含与唯一值相对应的所有项目。因此,如果一个值在数组中出现两次,就会有一个包含两个整数的组。
  • 我们调用Where来筛选组。我们只需要计数大于1的组,这样就只考虑重复的值。
  • 然后循环结果。grp(0)给出了组中的第一个数字(我们可以选择组中的任何数字,因为组中的所有数字都是相同的!)Count属性给出了重复次数。
票数 1
EN

Stack Overflow用户

发布于 2012-02-02 21:50:08

我会用下面这样的方式来尝试:

代码语言:javascript
复制
    Dim ints() As Integer = {1, 2, 2, 5, 4, 6}
    Array.Sort(ints)
    For i = 1 To ints.GetUpperBound(0)
        If ints(i) = ints(i - 1) Then MessageBox.Show(String.Format("{0} is repeated", ints(i)))
    Next

在排序数组上这样做可以减少嵌套。

我没有对此进行测试,但它应该是正确的。

票数 0
EN

Stack Overflow用户

发布于 2012-02-02 21:50:46

您可以使用LINQ查找重复项:

代码语言:javascript
复制
Dim repeating = (From n In ints
                 Group By n Into Dups = Group
                 Where Dups.Count > 1
                 Select Dups.First).ToArray()

这将返回一个整数数组,其中只包含在原始数组中不唯一的数字。

因此,这将显示重复的数字:

代码语言:javascript
复制
MessageBox.Show(String.Format("Duplicates found: {0}", String.Join(","c, repeating)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9113354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档