You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

船舶泊位数组存储问题求助:等待列表仅能添加一艘船即提示已满

排查船舶等待列表仅能添加一艘船的问题

嘿,我来帮你梳理下这个问题的常见排查方向——毕竟只能加一艘船就提示等待列表满,大概率是waitingList()方法里的逻辑或者等待列表的存储结构出了问题:

1. 等待列表的存储结构初始化错误

首先检查你的等待列表是怎么定义的:

  • 如果用的是固定长度数组,比如Ship[] waitingList = new Ship[1];,那数组本身容量只有1,自然只能装一艘船就满了。得把数组长度改成你预期的最大等待数量,比如new Ship[10]。
  • 如果用的是ArrayList这类动态集合,有没有在waitingList()方法里每次调用都重新初始化?比如方法内写List<Ship> waitingList = new ArrayList<>();,那每次调用这个方法都会创建一个新的空列表,之前添加的船会直接丢失,而且如果你的满状态判断逻辑写得有问题,就会出现“只能加一艘”的错觉。

2. 满状态判断逻辑出错

这是最常见的问题点,仔细检查你判断等待列表是否已满的代码:

  • 是不是把判断条件写成了if (waitingList.size() >= 1)?这种情况下只要列表里有一艘船,就会提示已满,完全不符合你的预期。应该改成和预设的最大等待容量比较,比如if (waitingList.size() >= MAX_WAITING_SHIPS),其中MAX_WAITING_SHIPS是你定义的常量(比如10)。
  • 如果是用数组+计数变量的方式(比如int currentWaitingCount),检查这个计数变量的更新逻辑:添加船舶后有没有执行currentWaitingCount++?或者初始化的时候是不是设成了1而不是0?

3. waitingList()方法的逻辑流程问题

  • 有没有可能等待列表是方法的局部变量?比如每次调用waitingList()都在方法内部创建列表实例,那之前添加的船舶根本没被持久化保存,看起来每次只能加一艘(实际是每次都是新列表)。这种情况要把等待列表改成类的成员变量,让它在类的生命周期内一直存在。
  • 检查添加船舶后的逻辑:是不是添加后不小心触发了“满状态”的提示?比如分支判断写反了,比如if (waitingList.size() < MAX_SIZE) { 添加 } else { 提示满 }写成了if (waitingList.size() > MAX_SIZE) { 添加 } else { 提示满 }。

如果可以的话,把waitingList()方法的完整代码贴出来,我能更精准地帮你定位问题。不过先按照上面的点自查,应该能找到问题所在~

内容的提问来源于stack exchange,提问作者S.smith94

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:41:26