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循环的,但请有人运行这个并帮助我。
初始化后无法调整数组的大小。您将不得不使用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将是您需要作为响应的数组