2017-05-29 19 views
0

ユーザーが10の名前を付けてプログラムを作成しようとしていますが、ユーザーが同じ名前を付けてプログラムがリストに追加して表示する必要がありますそれら。私の問題は、私は同じ名前をチェックする方法を理解していません。ユーザーが入力してリストに追加する場合の配列の配列

string[] namen = new string[10]; 
string[] names = new string[10]; 
List<string> result = new List<string>(); 

string naam; 

for(int i = 0;i<10;i++) 
{ 
    Console.WriteLine("Geef {0} naam in: ", i+1); 
    naam = Console.ReadLine(); 
      namen[i] = naam; 
} 

for(int i= 0;i<10;i++) 
{ 
    namen[i] = names[i]; 
} 
Array.Sort(names); 
for (int i = 0; i < 10;i++) 
{ 
    if (namen[i]==namen[i]) 
    { 
     result.Add(names[i]); 
    } 
} 
foreach(string show in result) 
{ 
    Console.WriteLine(show); 
} 
Console.ReadLine(); 
+1

は、ユーザーが重複した名前を入力するかどうかをチェックしますか? –

+0

よろしくお願いします。それをチェックして、それをリストに追加します。 –

+0

あなたの質問にはすでに回答があります。 https://stackoverflow.com/questions/4578260/how-to-find-all-duplicate-from-a-liststring –

答えて

1

あなたはList<string>を使用して名前が出回っ含まれているかどうかを確認できます。あなたはまた、それがSystem.Linq

string[] names = namen.GroupBy(n => n).Where(g => g.Count() > 1).Select(g => g.Key).ToArray(); 

GroupBy(n => n)グループに応じて文字列の配列を使用して行うことができ

List<string> names = new List<string>(); 
    List<string> allreadyEntered = new List<string>(); 

    string naam; 

    for(int i = 0;i<10;i++) 
    { 
     Console.WriteLine("Geef {0} naam in: ", i+1); 
     naam = Console.ReadLine(); 

     if(names.Contains(naam) && !allreadyEntered.Contains(naam)) 
     { 
      allreadyEntered.Add(naam); 
     } 

     names.Add(naam); 
    } 

    foreach(string naam in allreadyEntered) 
    { 
     Console.WriteLine(naam); 
    } 
    Console.ReadLine(); 
+0

ユーザーが3つの同じ名前を付けると、リストに2回表示されます... –

+0

私は答えを編集して削除しましたその問題 –

0

その値。

Where(g => g.Count() > 1)は、単一インスタンスのグループを削除します。

Select(g => g.Key)は、各グループの文字列値を選択します。私はあなたの代わりにこれを行うことができると思い配列

0

として

ToArray()は結果を与える:

string[] namen = new string[10]; 

    for(int i = 0;i<10;i++) 
    { 
     Console.WriteLine("Geef {0} naam in: ", i+1); 
     namen[i] = Console.ReadLine();; 
    } 
    namen 
     .GroupBy (n =>n) 
     .Where (w =>w.Count() > 1) 
     .ToList() 
     .ForEach(f=>Console.WriteLine(f.Key)); 
    Console.ReadLine(); 
関連する問題