C#名称任务列表

时间:2014-10-11 12:14:41

标签: c# arrays loops variables main

所以我正在为大学制作一个程序,我必须编写一个程序,将名称存储到一个数组中。 输入新名称后,它将添加到数组的末尾。用户可以继续添加名称,直到他们进入虚拟值'退出' 完成此操作后,程序将显示任何重复的名称。 例如。 输入姓名:比尔 输入姓名:Mary 输入名称:Anisha 输入姓名:Mary 输入名称:退出 玛丽是重复的。

我还应该尝试显示每个名称重复的次数。

    static void Main(string[] args)
    {
        Console.WriteLine("This program allows you to write names to a list,");
        int i = 0;

        //Due to the fact than i cannont resize an array after initialization, i used a list and converted it to an array at a later point
        List<string> names = new List<string>();


        string name = " ";
        Console.WriteLine("Enter names then press enter to add them to the list of names! if you wish to exit simple type exit.");
        //This loop adds names to the list
        while (name.ToLower() != "exit")
        {
            Console.WriteLine("Enter Name: ");
            name = Console.ReadLine();
            names.Add(name);
            i++;

        }

        //This line converts the list to an array
        string[] nameArray = names.ToArray();

        for(int z = 0;z <nameArray.Length + 1;z++)
        {
            for (int y = 0; y < z ; y++)
            {
                if (nameArray[y] == nameArray[z])
                {
                    Console.WriteLine("The name: " + nameArray[y] + " is a duplicate.");
                }
                else
                {
                    Console.Write(" ");
                }
            }

        }

        Console.ReadLine();
       }

这是我的代码,但是当我比较名称时它崩溃了,它给了我一个重复的名字而没有其他名字。然后崩溃,我认为这是相对于第二个for循环,但请有人可以运行这个并帮助我。

2 个答案:

答案 0 :(得分:1)

初始化后无法调整数组大小。您必须使用List而不是数组。

如果您只想使用数组,则必须在初始化时修改其大小。您可以要求用户输入数组大小。或者你可以初始化一个长长度数组(但不推荐)。

答案 1 :(得分:1)

程序不正确,实际上这是异常的情况,因为你的初始值是1而你的字符串[]的大小是1,所以你最多可以访问索引0,实际上在第一个循环本身你正在尝试索引1,这超出了范围异常。即使你纠正了逻辑错误,它的设计方式也是如此。以下是更好的解决方案

 static void Main(string[] args)
    {
        Console.WriteLine("This program allows you to write names to a list,");:
        List<string> nameList = new List<string>();
        string name = " ";
        Console.WriteLine("Enter names then press enter to add them to the list of names! if you wish to exit simple type exit.");
        while (name.ToLower() != "exit")
        {
            Console.WriteLine("Enter Name: ");
            name = Console.ReadLine();
            nameList.Add(name);
        }
        string[] nameArray = nameList.ToArray();

        Console.ReadLine();
    }

nameArray将是您需要作为响应的数组