我正在基于代理的建模中创建一个函数,该函数在区域内生成一个随机点,然后将该点转换为代理。但是,当我稍后使用此功能时,这些点在地图上无法为我提供适当的位置以进行进一步的计算。我想知道我在做什么错吗?或者如何改善这一点。
该函数的返回类型为ArrayList
ArrayList<DeliveryHouse> House = new ArrayList<DeliveryHouse>();
int i;
Point p;
DeliveryHouse h;
for(i=0;i<packagesC2C;i++)
{
p = main.Region2.randomPointInside();
h = main.deliveryHouse.setLocation(p);
House.add(i, h);
};
return House;
答案 0 :(得分:0)
我在代码中看到的主要问题是您没有初始化代理“ h”,而是将其指向您主要拥有的一个代理,这意味着您不断更改其在循环中的位置,并且只会反映最后一个位置。您创建的阵列列表将具有对同一代理的多个引用,而不是每个位置一个代理。
如果要在每个位置创建一个代理,则需要创建一个名为“ deliveryHouse”的代理,其代理类型为“ DeliveryHouse”,并将代码更改为以下内容。请注意,总体将具有所有代理,因此您不需要该函数的任何输出。
int i;
Point p;
for(i=0;i<packagesC2C;i++)
{
DeliveryHouse h = main.add_deliveryHouses();
p = main.Region2.randomPointInside();
h.setLocation(p);
}