C# 将用户输入添加到现有列表的.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);

我正在尝试创建一个Add方法,允许用户输入一个团队,然后将其添加到
列表团队
,然后它将显示列表内容。它需要有以下子句,如果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)