一种.Add方法,用于将用户输入添加到现有列表

时间:2013-12-04 00:40:52

标签: c# .net visual-studio list methods

我正在尝试创建一个Add方法,允许用户进入一个团队,然后将其添加到list<string> teams,然后它将显示列表内容。它需要有以下条款,如果输入Colchester,则输出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。 在方法添加团队中,错误在(teams.Add(userinput))处出现,说不能隐式地将类型void转换为bool,并且我不知道如何在列表的内容达到10时出现错误。我也在假设科尔切斯特的位是正确的。

更新 它现在看起来像这样:

      public void AddTeams()
    {
        Console.WriteLine("Enter a team to be added: ");
        string userinput = Console.ReadLine();

     if (teams.Count < 10)
         {
             if (userinput != "Colchester")
             {
                 teams.Add(userinput);
                 foreach (var item in teams)
                     Console.Write(item.ToString() + " ");
             }

             else

                 Console.Write("NOT ALLOWED");
         }
            else
                Console.Write("MAXIMUM LIMIT REACHED");
        }

但是我发现科尔切斯特仍然被添加到列表中,有关如何阻止它的任何想法?此外,当输入超过10支球队时,应显示“达到最大数量”的消息?

注意 - 我是C#的新手,我知道我的代码很糟糕:)

2 个答案:

答案 0 :(得分:2)

试试这个:

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....");

请注意,代码的逻辑不好(打印的信息没有多大意义)。

答案 1 :(得分:2)

你得到void到bool转换错误的原因是System.Collections.Generic.List的“Add”方法没有返回任何内容,因此它不能用作if语句的条件表达式。 / p>

此外,列表没有类似数组的固定大小,因此如果达到10的“限制”,您甚至不会得到异常。 (如果你使用了10号数组,你会得到一个IndexOutOfRange异常。)

King King的回答提供的代码可以解决您在问题的其他部分所要求的内容。最后的错误信息肯定更具描述性。

旁注,因为您知道列表的类型为“string”,为什么还要调用ToString,如果它不是字符串,它将被运行时调用。

要回答您的编辑,应首先检查“Colchester”,代码输入第一个if(因为计数小于10),甚至不检查名称。您还可以在计数检查中嵌套“Colchester”的支票。嵌套方法可能在“技术上”更好,但两者都可行。

要回答第二次编辑,请将“您输入的其他内容”替换为“已达到最大数量”,以确保即使超出限制的项目是“科尔切斯特”也会显示此消息,请检查“科尔切斯特” “嵌套在计数检查中(否则”科尔切斯特“检查将优先)。

方法1(未嵌套):

   if (input == "Colchester)
      ... (display error)
   else if (list.Count < 10)
      ... (add and print)
   else
      ... (display different error)

方法2(嵌套):

   if (list.Count < 10)
   {
      if (input != "Colchester")
      {
         ... (add and print)
      }
      else
         ... (display error)
   }
   else
      ... (display other error)