如何从动态数组导入

时间:2019-05-03 14:16:53

标签: c# dynamic import

我的程序必须将对象放置在地图上,我必须从文本文件中获取有关对象的信息,但是我的问题是对象中没有限制,所以当我编写代码时,我不知道是否有人想要放置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;



    }

1 个答案:

答案 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