對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 –