【问题标题】:How to solve "java.lang.IndexOutOfBoundsException" problem via Agent-based modeling in Anylogic?如何通过 Anylogic 中的基于代理的建模解决“java.lang.IndexOutOfBoundsException”问题?
【发布时间】:2021-12-27 11:20:39
【问题描述】:

我想将停车分配给每个订单,然后从其他停车的订单集中删除停车分配订单时遇到问题。这个数组列表 arr_assignedOrderSet 的大小为 22,因此它应该迭代 22 次。但我不知道为什么它在 11 次后停止了。如果我将迭代次数 arr_assignedOrderSet.size() 替换为 22,它将显示错误“java.lang.IndexOutOfBoundsException: Index 11 out of bounds for length 11 ”。代码如下:

ArrayList<Order> arr_assignedOrderSet = new ArrayList<Order>();
arr_assignedOrderSet = pop_parkings.get(index).orderSet;

for(int i=0; i<arr_assignedOrderSet.size(); i++){
    Order order = arr_assignedOrderSet.get(i);
    for(int j=0; j<order.col_parking.size(); j++){
        Parking p = order.col_parking.get(j);
        p.orderSet.remove(order);
    }

}

非常感谢您的帮助~ ;-)

【问题讨论】:

  • 如何创建pop_orders 代理?一开始你创建了 22 个?
  • 我创建了 100 个订单,并首先将停车位分配给其中的 22 个订单。
  • 你什么时候运行这些循环?一开始?
  • 你说“arr_assignedOrderSet 中有 22 个订单,像这样:”但代码清楚地显示只有 11 个 :)
  • 是的,你是对的!当我评论“order.col_parking”的循环并打印出“arr_assignedOrderSet.size()”的循环时,我可以得到22个订单。但是我不知道为什么如果我把循环放回去,结果减半......

标签: java anylogic agent-based-modeling dynamic-delivery parking


【解决方案1】:

在不完全理解您的模型的情况下,11 恰好是 22 的二分之一似乎很可疑,这意味着以下语句:p.orderSet.remove(order); 正在缩小相同的orderSet,通过pop_parkings.get(index).orderSet 变量在pop_parkings.get(index).orderSet 中迭代。当这个赋值发生时arr_assignedOrderSet = pop_parkings.get(index).orderSet;Java 实际上并没有复制集合的内容,只是复制了对它的引用。如果是这种情况,那么解决方法是替换这一行:

arr_assignedOrderSet = pop_parkings.get(index).orderSet;

用这一行:

arr_assignedOrderSet.addAll(pop_parkings.get(index).orderSet);

【讨论】:

  • 您好,Artem,感谢您的回答。当我打印出这个数组列表的结果时,一切正常,如下所示,“arr_assignedOrderSet 中有 22 个订单,如下所示:”。这意味着更改代码后,我仍然得到相同的结果。 :( 还是谢谢你。
  • 您可以在开始删除元素之前将其打印出来,因此它在打印时看起来很好,但在运行时却不行。你知道哪一行导致索引越界错误吗?
  • 您好 Artem,非常感谢您的建议。我发现错误在于这一行: Order order = arr_assignedOrderSet.get(i);当我将其更改为 Order order = arr_assignedOrderSet.get(0); 时,问题得到了解决获取每个元素,直到数组变空。
猜你喜欢
  • 2017-03-31
  • 2018-04-26
  • 2020-03-08
  • 1970-01-01
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
相关资源
最近更新 更多