2011-10-27 99 views
1

對C#來說相當新穎。爲班級分配要求我們從用戶輸入的值生成數組。這部分完成,工作完美。計數數組中的重複數字

既然數組已完成,我需要能夠顯示Console.WriteLine中數組中輸入的每個不同數字,以及該數字出現了多少次,並且我如何完成此操作有點遺憾。

+1

而不是別人爲你做你的功課,做一點研究,當你有一個特定的問題時回來,你可能只是學習一點點。 – ChrisBint

+0

你正在使用哪種.NET框架?有助於確定是否可以使用泛型和/或LINQ或不使用泛型。 – Kash

+0

這是一個解決問題的問題,而不是一個編程問題IMO –

回答

6

你允許使用LINQ嗎?如果是這樣,調查GroupByCount()。基本上有一個班輪在這裏可以工作,但是因爲它是作業,所以我會讓你爲自己制定詳細的計劃......如果遇到問題,當你有一段時間時尋求更多的幫助。

+2

+1用於指向路徑的開始,而不是結束 – Matt

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」數組。否則,只需更改類型。

+0

請注意,這會打印每個數字的次數,因爲{1,1,1}會給出「1 3; 1 3; 1 3」。 –

+0

好點。我會使用字典解決方案來避免這些問題。或者列表而不是數組w/IndexOf()檢查以避免重複。 – 2011-10-27 16:29:56

0

沒有LINQ,你可以跟蹤你生成的數字。像Dictionary這樣的數據結構可以很好地工作,將數字映射到迄今爲止您看過它的次數。

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,爲他人所提出的建議。 =)