【发布时间】:2016-11-22 12:55:34
【问题描述】:
我正在尝试让智能代理向右转 3 次。既然不能返回多个对象,那我怎么能连续调用3次this.buildPhysicalAction(TurnRightAction.class)呢?
public class VacuumWorldExplorerMind extends VacuumWorldDefaultMind {
@Override
public EnvironmentalAction decide(Object... parameters) {
PerceiveAction range = new PerceiveAction();
VacuumWorldCoordinates currentLocation;
this.buildPhysicalAction(TurnRightAction.class);
this.buildPhysicalAction(TurnRightAction.class);
this.buildPhysicalAction(TurnRightAction.class);
while (true) {
// if perceive range-checkForWall == 1
// turn left
// count steps made = stepsMade
if (range.getPerceptionRange() == 1) {
return this.buildPhysicalAction(TurnLeftAction.class);
}
return this.buildPhysicalAction(MoveAction.class);
}
}
}
【问题讨论】:
-
可以返回一个数组,可以包含多个值。
-
我怎样才能将 this.buildPhysicalAction(TurnRightAction.class) 添加到数组中?你是说ArrayList吗?
-
有点不相关,但我可以问一下
while (true)循环的意义是什么?代码总是在第一次迭代时返回,所以这个循环似乎毫无意义 -
是的,你是对的,我会删除它
-
ArrayList 似乎是满足您需求的不错选择,因为它保留了在这种情况下很重要的顺序,我敢打赌。此外,您可以使用 Composite 模式,它可以让您组合环境动作,并为消费者提供一个很好的抽象,而消费者又会简单地在您的 Action 上调用一些 Execute 方法,并将执行进一步传播到内部动作。
标签: java return multiple-instances