我的程序必须将对象放置在地图上,我必须从文本文件中获取有关对象的信息,但是我的问题是对象中没有限制,所以当我编写代码时,我不知道是否有人想要放置1或10或5个对象。每个对象都有单独的一行,您可以在其中提供参数,例如要放置的地图上的x,y坐标等。 我发现我会要求用户在对象之前写一行要添加的对象数量。这是我的示例:
txt文件:
200 <----在这里不重要
10000 <----在这里不重要
5 <---对象数
2,5 / 60-60 <-对象
4,5 / 70-70 <-对象
5,5 / 80-80 <-对象
1,1 / 30-30 <-对象
10,10 / 100-100 <-object
10,1 / 5 <----在这里不重要
身高,体重/ x-y
vs抛出范围外异常。希望你能理解我的英语和我的问题
int numberofObjects = int.Parse(data[2]);
Targets[] TargetsGet = new Target[numberofObjects];
int j = 0;
for (int i = 4; i <= numberofObjects+3; i++)
{
targets[j] = new Target(int.Parse(data[i].Split(',')[0]), int.Parse(data[i].Split('/')[0].Split(',')[1]), new Coordinate(int.Parse(data[i].Split('/')[1].Split('-')[0]),int.Parse( data[i].Split('-')[1])));
j++;
}
return TargetsGet;
}
答案 0 :(得分:0)
首先,您的解决方案有效。 如果不想让用户指定对象数量,则可以使用列表而不是数组,并在对象列表的末尾使用分隔符。例如:
List<Targets> TargetsGet = new List<Target>();
int j = 0;
while(data[j]!="separator")
{
targets.Add(new Target(int.Parse(data[j].Split(',')[0]), int.Parse(data[j].Split('/')[0].Split(',')[1]), new Coordinate(int.Parse(data[j].Split('/')[1].Split('-')[0]),int.Parse( data[j].Split('-')[1])));
j++;
}
return TargetsGet.ToArray();
}
应该修改文件,以便字符串“ separator”位于对象列表之后:例如: 200 <----在这里不重要
10000 <----在这里不重要
2,5 / 60-60 <-对象
4,5 / 70-70 <-对象
5,5 / 80-80 <-对象
1,1 / 30-30 <-对象
10,10 / 100-100 <-object
分隔符
10,1 / 5 <----在这里不重要
身高,体重/ x-y