如果用户键入然后添加列表,则comapring数组

时间:2017-05-29 07:30:16

标签: c#

我正在尝试创建一个用户提供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();

3 个答案:

答案 0 :(得分:1)

您可以使用List<string>并检查名称是否已全部包含在内:

    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();

答案 1 :(得分:0)

您也可以使用System.Linq

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

GroupBy(n => n)根据字符串数组对字符串数组进行分组。

Where(g => g.Count() > 1)删除了包含单个实例的组。

Select(g => g.Key)选择每个组的字符串值。

ToArray()将结果作为数组

答案 2 :(得分:0)

我认为你可以这样做:

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();