计算数组中的重复数字

时间:2011-10-27 16:18:32

标签: c# arrays

C#相当新。有一个类的赋值,要求我们从用户输入的值生成一个数组。这部分完成并且工作完美。

现在数组已经完成,我需要能够在Console.WriteLine中显示数组中输入的每个不同的数字,以及该数字出现的次数,我对如何实现这一点感到有点迷失。

5 个答案:

答案 0 :(得分:6)

您是否允许使用LINQ?如果是,请调查GroupByCount()。基本上有一个单行程可以在这里工作,但是因为它的功课我会让你自己解决细节...如果你遇到问题,请求更多的帮助。

答案 1 :(得分:5)

您可以创建一个字典,其中键是数字,值是数组中该特定数字的计数,然后在每次找到数字时增加字典中的值:

示例:

        int[] arrayOfNumbers = new int[] { 1, 4, 2, 7, 2, 6, 4, 4, };
        Dictionary<int, int> countOfItems = new Dictionary<int, int>();
        foreach (int eachNumber in arrayOfNumbers)
        {
            if (countOfItems.ContainsKey(eachNumber))
                countOfItems[eachNumber]++;
            else
                countOfItems[eachNumber] = 1;
        }

此代码适用于所有C#版本,但如果您使用的是C#3或更高版本,则可以使用LINQ,正如其他人所建议的那样。 =)

答案 2 :(得分:0)

您可以使用LINQ Distinct()扩展方法。

http://msdn.microsoft.com/en-us/library/system.linq.enumerable.distinct.aspx

答案 3 :(得分:0)

foreach (int item in array)
{
     Console.Write(item.ToString() + " ");
     int frequency = 0;
     for (int i = 0; i < array.Length; ++i)
     {
         if (array[i] == item) ++frequency;
     }
     Console.WriteLine(frequency.ToString());
}

肮脏而蛮力的方式。考虑到你的数组是一个“int”数组。否则,只需更改类型。

答案 4 :(得分:0)

如果没有LINQ,您可以跟踪您正在生成的数字。像Dictionary这样的数据结构可以很好地工作,将数字映射到目前为止看到它们的次数。