2016-11-22 11 views
0

Я пытаюсь заставить разумного агента повернуть направо 3 раза. Поскольку вы не можете возвращать несколько объектов, как я могу позвонить this.buildPhysicalAction(TurnRightAction.class) 3 раза подряд?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 Дважды Действие и TurnRight Thrice Действуйте и вызывайте их соответственно, когда вам нужно поворачивать один, два или три раза.

Другой выбор - это то, что вы уже делаете, вызывать TurnRightAction количество раз, когда требуется действие.

+0

, называя this.buildPhysicalAction (TurnRightAction.class); один не повернуть направо, мне нужно вернуть this.buildPhysicalAction (TurnRightAction.class); – Naomi

+0

Так что вы можете вернуть TurnRightThriceAction в течение 3-х раз, поворачивая направо. Другой способ - вернуть класс оболочки, содержащий this.buildPhysicalAction (TurnRightAction.class) и подсчитать. – nanosoft