我正在尝试创建一个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#的新手,我知道我的代码很糟糕:)
答案 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)