2016-11-22 100 views
0

我想要一個智能代理右轉3次。既然你不能返回多個對象,我怎樣才能連續3次調用this.buildPhysicalAction(TurnRightAction.class)Java:你如何按順序返回多個對象?

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); 
    } 
    } 
} 
+2

您可以返回一個數組,其中可以包含多個值。 –

+0

如何將this.buildPhysicalAction(TurnRightAction.class)添加到數組?你的意思是ArrayList? – Naomi

+1

Slighlty無關,但我可以問'while(true)'循環的重點是什麼?代碼總是返回它的第一次迭代,所以循環似乎毫無意義 –

回答

0

這基本上是一個設計選擇。 一種方法可以定義如下類:TurnRightAction,TurnRight 兩次 Action和TurnRight 三次元當需要轉動一次,兩次或三次時分別採取行動和呼叫。

另一種選擇是您已經在做什麼,請致電TurnRightAction多少次需要採取行動。

+0

調用this.buildPhysicalAction(TurnRightAction.class);單獨不會右轉,我需要返回this.buildPhysicalAction(TurnRightAction.class); – Naomi

+0

所以你可以返回TurnRightThriceAction 3次右轉。另一種方法是返回包含this.buildPhysicalAction(TurnRightAction.class)的包裝類並計數。 – nanosoft