如何修复人道主义物流系统中仓库可用性更新的Java代码问题?
问题修复方案
问题根源
你注释掉的代码错误地直接操作仓库列表main.magazzinis,而非针对卡车要提取物资的目标仓库更新可用性。main.magazzinis是List<Magazzini>类型,不存在直接的cap属性,所以代码无法生效。
修复后的代码
List <Magazzini> subsetlist = findAll(main.magazzinis, w->w.capacita>0); List <Magazzini> sortmag = new ArrayList<Magazzini>(); List <Double> distance = new ArrayList<Double>(); sortmag = subsetlist; System.out.println(sortmag); for (Magazzini m : subsetlist) { m.distance = distanceTo(m); } sortmag = sortAscending(sortmag, p-> p.distance); // 修复:获取选中的目标仓库,更新其可用性(运力为2,可替换为变量) Magazzini targetWarehouse = sortmag.get(0); // 若你定义的属性名是cap,就替换成targetWarehouse.cap = targetWarehouse.cap - 2; targetWarehouse.availability = targetWarehouse.availability - 2; moveTo(targetWarehouse); System.out.println(sortmag); partenza = time();
关键说明
- 通过
sortmag.get(0)拿到排序后最近的、有可用物资的仓库(即卡车前往的目标仓库) - 直接修改该仓库对象的
availability(或你定义的cap)属性即可,因为targetWarehouse是main.magazzinis列表中的对象引用,修改后会同步到原列表的对应仓库 - 如果卡车运力不是固定值2,建议定义变量(比如
int truckCapacity = 2;)替代硬编码数值,提升代码灵活性
内容的提问来源于stack exchange,提问作者Alfonso
相关产品推荐
相关产品推荐

