Java - Как перейти к первому элементу, когда вы добавляете его в список максимум? - PullRequest
3 голосов
/ 20 сентября 2019

У меня есть 4 направления с идентификаторами 1, 2, 3, 4.(Север, Восток, Юг, Запад)

Если я хочу повернуть налево, я получаю текущий Id и минус 1. Я думаю, что я определил алгоритм для этого.

int currentDirection = 1;
currentDirection = (currentDirection - 1) % 4 + 4;

Если текущее направление равно 1 (север), и я хочу пойти влево (минус), я получаю следующий результат:

Result: 4

Так что это работает.Работает со всеми направлениями.Но я не могу понять, как получить правильный результат, когда я хочу пойти вправо (плюс).Я пробовал этот код.Работает, если текущее направление 1, 2 или 4.Но это не работает, когда текущее направление 3 (юг)

int currentDirection = 3;
currentDirection = (currentDirection + 1) % 4;

Будет выглядеть так.

Result: 0

Ответы [ 2 ]

4 голосов
/ 20 сентября 2019

Поворот направо: currentDirection = currentDirection % 4 + 1

Поворот налево: currentDirection = (currentDirection+2) % 4 + 1

4 голосов
/ 20 сентября 2019

Просто так: currentDirection = (currentDirection % 4) + 1;

ОБНОВЛЕНИЕ:
Я бы реализовал это следующим образом, так как лично я нахожу это более читабельным:

Поверните направо:

nextDirection = (currentDirection == 4) ? 1 : (currentDirection + 1);

Поверните налево:

nextDirection = (currentDirection == 1) ? 4 : (currentDirection - 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...