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