Я работаю над одной программой, мне нужно найти положение робота в сетке, он может двигаться в прямом направлении и может менять свое направление на север, юг, восток и запад и получил заданную команду последовательность. Итак, какой будет конечная позиция робота.
Использование любого типа ветвления условия (например, if / else, switch / case) запрещено.
ПРИМЕР-
ГРИД (100 * 500)
Начальная позиция робота - (5,3)
Возможные команды -
N-Север,
E-East,
W-Запад,
S-Юг,
M-движение вперед
Пример ввода - {N, S, M.M, E, W, E, S, M, S, M}
Я пытался использовать Enum, но проблема, с которой я сталкиваюсь, заключается в том, как вызывать методы Enum с динамическими значениями, которые я получаю с помощью команд.
public class RobotMovesInGrid {
Scanner input = new Scanner(System.in);
String command=input.next();
int commLength = command.length();
static enum Command {
N{@Override public void execute(String g, String r){ System.out.println("do the N move here"); }},
E{@Override public void execute(String g, String r){ System.out.println("do the E move here"); }},
S{@Override public void execute(String g, String r){ System.out.println("do the S move here"); }},
W{@Override public void execute(String g, String r){ System.out.println("do the W move here"); }},
M{@Override public void execute(String g, String r){ System.out.println("do the M move here"); }};
public abstract void execute(String g, String r);
}
public void nextPosition() {
Command c1;
for(int i=0;i<commLength;i++) {
if (command.charAt(i)=='N'||command.charAt(i)=='E'|| command.charAt(i)=='S'|| command.charAt(i)=='W'||command.charAt(i)=='M')
c1= Command.M;// Here instead of M, I am trying to give dynamic commands but it is not taking it
System.out.println("Current position is"+c1);
}
}
}
Может, кто-нибудь подскажет, как вызывать методы Enum, используя команды, заданные в качестве ввода.