C#名称列表任务

本文关键字:任务 列表 | 更新日期: 2023-09-27 18:26:12

所以我正在为大学制作一个程序,其中我必须编写一个将名称存储到数组中的程序。当输入新名称时,它将被添加到数组的末尾。用户可以继续添加名称,直到他们输入"退出"的虚拟值完成此操作后,程序将显示任何重复的名称。例如。输入名称:Bill输入姓名: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循环的,但请有人运行这个并帮助我。

C#名称列表任务

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

如果您只想使用数组,则必须在初始化时固定其大小。您可以要求用户输入数组大小。或者,您可以初始化一个长数组(但不建议这样做)。

程序不正确,事实上这是一种异常情况,因为i的初始值是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将是您需要作为响应的数组