java - 为什么剩余人数计算不正确?
问题描述
我正在编写一个救援模拟程序,在应用所需的测试时,它一直失败,说建筑物中剩余的居住人数没有正确计算,我不知道为什么!下面我提供了两种应该返回居住者数量的方法。提前致谢!
public void treat(){
boolean f=false;
if(!f){
((Disaster)((Citizen)this.getTarget()).getDisaster()).setActive(false);
ResidentialBuilding r= (ResidentialBuilding)this.getTarget();
if(r.getOccupants().size()!=0){
for(int i=0;i<r.getOccupants().size();i++){
if(this.getPassengers().size()<=this.getMaxCapacity()){
f=true;
Citizen z=(Citizen)r.getOccupants().get(i);
if(z.getState()!=CitizenState.DECEASED){
r.getOccupants().remove(i);
this.getPassengers().add(z);
}
}
}
}
else{
this.setState(UnitState.IDLE);
this.jobsDone();
}
}
else
this.cycleStep();
}
public void cycleStep(){
if(super.getDistanceToBase()==0)
super.getWorldListener().assignAddress(this, 0, 0);
if(super.getTarget()!=null){
if(this.getLocation()== this.getTarget().getLocation()){
this.setDistanceToBase(this.getLocation().getX() + this.getLocation().getY());
}
else if(this.getDistanceToBase()<=0){
this.setDistanceToBase(0);
this.setLocation(new Address(0,0));
for (int i = 0; i < this.getPassengers().size(); i++) {
Citizen c = (Citizen)this.getPassengers().remove(i);
}
}
else{
this.setDistanceToBase(this.getDistanceToBase()-this.getStepsPerCycle());
}
}
}
解决方案
推荐阅读
- python - 熊猫:for循环之前的while循环,直到满足某个条件
- django-rest-framework - 如何检查当前用户是否登录 django rest 框架?如何通知其他 django 应用程序当前用户已登录?
- jupyter-notebook - Jupyter Hub the littlest : 服务器经常关闭
- android - XAMARIN / Android App安装问题
- php - 销毁其他用户的会话
- xml - 使用 Bash 检索元素标记值 XML
- swift - 使用 MVVM 使用 RxSwift 查看初始数据源和过滤
- python - 如何使用 CPLEX Python API 中的 LazyConstraintCallback 通过 Benders 分解解决 MILP 问题
- activemq-artemis - ActiveMQ Artemis 的 REST API 在哪里?
- c# - 想要获取不唯一的物品