对C#来说相当新颖。为班级分配要求我们从用户输入的值生成数组。这部分完成,工作完美。计数数组中的重复数字
既然数组已完成,我需要能够显示Console.WriteLine中数组中输入的每个不同数字,以及该数字出现了多少次,并且我如何完成此操作有点遗憾。
对C#来说相当新颖。为班级分配要求我们从用户输入的值生成数组。这部分完成,工作完美。计数数组中的重复数字
既然数组已完成,我需要能够显示Console.WriteLine中数组中输入的每个不同数字,以及该数字出现了多少次,并且我如何完成此操作有点遗憾。
你允许使用LINQ吗?如果是这样,调查GroupBy
和Count()
。基本上有一个班轮在这里可以工作,但是因为它是作业,所以我会让你为自己制定详细的计划......如果遇到问题,当你有一段时间时寻求更多的帮助。
+1用于指向路径的开始,而不是结束 – Matt
您可以使用LINQ Distinct()扩展方法。
http://msdn.microsoft.com/en-us/library/system.linq.enumerable.distinct.aspx
至于它们出现的时间,可以使用Distinct()的结果为每个出现使用Count()。 – viniciushana
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”数组。否则,只需更改类型。
请注意,这会打印每个数字的次数,因为{1,1,1}会给出“1 3; 1 3; 1 3”。 –
好点。我会使用字典解决方案来避免这些问题。或者列表
没有LINQ,你可以跟踪你生成的数字。像Dictionary
这样的数据结构可以很好地工作,将数字映射到迄今为止您看过它的次数。
可以创建,所述键是数字和值是在阵列中该特定数的计数,然后将每个一些被发现时间增加在字典中的值的字典:
实施例:
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,为他人所提出的建议。 =)
而不是别人为你做你的功课,做一点研究,当你有一个特定的问题时回来,你可能只是学习一点点。 – ChrisBint
你正在使用哪种.NET框架?有助于确定是否可以使用泛型和/或LINQ或不使用泛型。 – Kash
这是一个解决问题的问题,而不是一个编程问题IMO –