我正在尝试将用户指定的名称分配给名称变量(Player1,Player2等)。
程序要求的玩家数量取决于用户提供的金额(int TotalPlayers)。因此,如果用户说总数为5,则for循环将要求5个名称,而不是更多。
我试图通过首先将所有用户输入添加到列表中然后将列表中的名称分配到名称变量中来实现此目的,但我似乎无法使其工作。
有人可以帮我修复错误,还是有更好的方法可以解决这个问题?
谢谢!
AsynchDNS
答案 0 :(得分:1)
看起来Console.WriteLine(PlayerList);
会导致您出现问题。
这使用了基础对象中的内置ToString
方法,它将为您提供
System.Collections.Generic.List`1[System.String]
或类似。
您可以尝试Console.WriteLine(string.Join(", ", PlayerList));
获取简单的字符串列表。
大多数情况下,.Net中的默认字符串生成并不是您想要的,您需要遍历列表并自己构建字符串。
答案 1 :(得分:1)
上面的代码看起来正确执行但我认为我们需要更多信息。你的名字变量是什么样的?如果你愿意,你可以像这样通过循环创建一个列表。
说NameVariable是一个简单的对象。
public class NameVariable
{
public int id {get;set;}
public string Name {get;set;}
}
然后你的代码看起来像:
public static void Main()
{
Console.WriteLine("Write amount of players");
int TotalPlayers = Convert.ToInt32(Console.ReadLine());
List<NameVariable> PlayerList = new List<NameVariable>();
for (int index = 0; index < TotalPlayers; index++)
{
Console.WriteLine("Enter player {0}'s name:", index + 1);
PlayerList.Add(new NameVariable(){
Name = Console.ReadLine(),
Id = index
});
}
foreach(var player in PlayerList)
{
Console.WriteLine(player.Name);
}
}