C# 将用户输入添加到现有列表的.Add方法
我正在尝试创建一个Add方法,允许用户输入一个团队,然后将其添加到C# 将用户输入添加到现有列表的.Add方法,c#,.net,visual-studio,list,methods,C#,.net,Visual Studio,List,Methods,我正在尝试创建一个Add方法,允许用户输入一个团队,然后将其添加到列表团队,然后它将显示列表内容。它需要有以下子句,如果Colchester为enter,则输出No,如果列表的内容达到10,则不添加任何其他内容,并返回错误 public FootballTeams(){ } List<string> teams; public void ListInit() { teams = new List<string>(10);
列表团队
,然后它将显示列表内容。它需要有以下子句,如果Colchester为enter,则输出No,如果列表的内容达到10,则不添加任何其他内容,并返回错误
public FootballTeams(){ }
List<string> teams;
public void ListInit()
{
teams = new List<string>(10);
teams.Add("Everton");
teams.Add("Liverpool");
teams.Add("Arsenal");
teams.Add("Manchester United");
teams.Add("West Ham United");
}
public void AddTeams()
{
Console.WriteLine("Enter a team to be added: ");
string userinput = Console.ReadLine();
if (userinput == "Colchester")
{
Console.Write("NOT ALLOWED");
}
else if (teams.Count < 10)
{
teams.Add(userinput);
foreach (var item in teams)
Console.Write(item.ToString() + " ");
}
else
Console.Write("You entered something else....");
}
然而我发现科尔切斯特仍然被列入名单,有什么办法可以阻止这一切?此外,当输入超过10个团队时,应显示消息“已达到最大数量”
注意——我是C#的新手,我知道我的代码很烂:)试试这个:
if (teams.Count < 10){
teams.Add(userinput);
foreach (var item in teams)
Console.Write(item.ToString() + " ");
} else if (userinput == "Colchester") Console.Write("NOT ALLOWED");
else Console.Write("You enter something else....");
if(teams.Count<10){
添加(用户输入);
foreach(团队中的var项目)
Console.Write(item.ToString()+);
}else if(userinput==“Colchester”)控制台。写入(“不允许”);
else控制台。写入(“您输入了其他内容…”);
请注意,代码的逻辑不好(打印的消息没有多大意义)。尝试以下操作:
if (teams.Count < 10){
teams.Add(userinput);
foreach (var item in teams)
Console.Write(item.ToString() + " ");
} else if (userinput == "Colchester") Console.Write("NOT ALLOWED");
else Console.Write("You enter something else....");
if(teams.Count<10){
添加(用户输入);
foreach(团队中的var项目)
Console.Write(item.ToString()+);
}else if(userinput==“Colchester”)控制台。写入(“不允许”);
else控制台。写入(“您输入了其他内容…”);
请注意,代码的逻辑不好(打印的消息没有多大意义)。导致void-to-bool转换错误的原因是System.Collections.Generic.List的“Add”方法不返回任何内容,因此它不能用作if语句的条件表达式 此外,列表不像数组那样具有固定大小,因此如果达到10的“限制”,您甚至不会出现异常。(如果使用大小为10的数组,则会出现IndexOutfrange异常) King's Response提供的代码将满足您在问题的另一部分中的要求。最后的错误消息肯定更具描述性 旁注,既然您知道列表是“string”类型的,为什么还要麻烦调用ToString呢?如果它不是字符串,运行时就会调用它 为了回答您的编辑,应该首先检查“Colchester”,代码输入第一个if(因为计数小于10),甚至不检查名称。您还可以将“Colchester”的支票嵌套在计数支票中。嵌套方法在“技术上”可能更好,但两者都会起作用 要回答第二次编辑,请将“您输入了其他内容”替换为“已达到最大数量”,以确保即使超出限制的项目是“Colchester”,也会显示此消息,请检查嵌套在计数检查中的“Colchester”(否则“Colchester”检查将优先) 方法1(非嵌套):
if(输入==”Colchester)
…(显示错误)
否则如果(list.Count<10)
…(添加并打印)
其他的
…(显示不同的错误)
方法2(嵌套):
if(list.Count<10)
{
如果(输入!=“Colchester”)
{
…(添加并打印)
}
其他的
…(显示错误)
}
其他的
…(显示其他错误)
出现void-to-bool转换错误的原因是System.Collections.Generic.List的“Add”方法不返回任何内容,因此不能将其用作if语句的条件表达式
此外,列表没有固定大小的数组,因此如果达到10的“限制”,甚至不会出现异常(如果使用大小为10的数组,则会出现IndexOutfrange异常)
King's Response提供的代码将满足您在问题的另一部分中的要求。最后的错误消息肯定更具描述性
旁注,既然您知道列表是“string”类型的,为什么还要麻烦调用ToString呢?如果它不是字符串,运行时就会调用它
要回答您的编辑,应该首先检查“Colchester”,代码输入第一个if(因为计数小于10),甚至不检查名称。您也可以将“Colchester”检查嵌套在计数检查中。嵌套方法可能“技术上”更好,但两者都可以工作
要回答第二次编辑,请将“您输入了其他内容”替换为“已达到最大数量”,以确保即使超出限制的项目是“Colchester”,也会显示此消息,请检查嵌套在计数检查中的“Colchester”(否则“Colchester”检查将优先)
方法1(非嵌套):
if(输入==”Colchester)
... (显示错误)
否则如果(list.Count<10)
... (添加并打印)
其他的
... (显示不同的错误)
方法2(嵌套):
if(list.Count<10)
{
如果(输入!=“Colchester”)
{
…(添加并打印)
}
其他的
…(显示错误)
}
其他的
... (显示其他错误)
我认为你的老师不是科尔切斯特的粉丝?@PreetSangha他只是对他们有一些奇怪的憎恨:p代码其实并不太糟糕,一些无关的片段(比如调用ToString),但除此之外,对于刚接触这个框架的人来说,这很好。我认为你的老师不是一个科尔切斯特迷?@PreetSangha他只是对他们有一些奇怪的憎恨:p代码其实并不太糟糕,一些无关的片段(比如调用ToString),但除此之外,对于刚接触该框架的人来说,这很好。我如何使其嵌套?它确实分配了感谢,只是在第一个错误上得到了一个错误,说它无效。确保在if和else之间的语句周围加上大括号(假设有多个)。只有在if/else if/else后面正好有一条语句时,才能使用大括号。我没有把它们包括进去,因为我打字很快。我只是设法把它们包括进去
if (input == "Colchester)
... (display error)
else if (list.Count < 10)
... (add and print)
else
... (display different error)
if (list.Count < 10)
{
if (input != "Colchester")
{
... (add and print)
}
else
... (display error)
}
else
... (display other error)