Целочисленная циклическая итерация Java При кодировании я нахожу себя делая следующее очень часто: corner++; if(corner == 4) corner = 0; В любом случае это делается в одной строке? В этом примере угол должен быть 0, 1, 2, 3, 0, 1, 2, 3, 0.... Ответ 1 Вы можете использовать эту короткую и видную строку (Demo): corner = (corner + 1) % 4; Или, даже немного короче (Demo): corner = ++corner % 4; Ответ 2 Используйте остаток. Это две строки, но чистые. corner++; corner %= 4; Ответ 3 Вы можете сделать это: corner = ++corner == 4 ? 0 : corner; Это даст вам возможность назначить что-то еще для переменной corner в случае, если ваш тест corner == 4 не прошел. Ответ 4 Я использую: if (++corner == 4) corner = 0; Ответ 5 Это не так очевидно, но намного быстрее, поскольку деление обычно выполняется медленнее, чем любая побитовая операция. corner = ++corner & 3; EDIT: И удивительно, что я обнаружил еще один удивительный способ сделать велосипед - используя смены, и он работает еще быстрее! corner = ++corner << 30 >>> 30; И этот трюк работает только при любой мощности 2. Этот тест показывает все результаты (хотя это javascript, а не java)
Ответ 1 Вы можете использовать эту короткую и видную строку (Demo): corner = (corner + 1) % 4; Или, даже немного короче (Demo): corner = ++corner % 4;
Ответ 3 Вы можете сделать это: corner = ++corner == 4 ? 0 : corner; Это даст вам возможность назначить что-то еще для переменной corner в случае, если ваш тест corner == 4 не прошел.
Ответ 5 Это не так очевидно, но намного быстрее, поскольку деление обычно выполняется медленнее, чем любая побитовая операция. corner = ++corner & 3; EDIT: И удивительно, что я обнаружил еще один удивительный способ сделать велосипед - используя смены, и он работает еще быстрее! corner = ++corner << 30 >>> 30; И этот трюк работает только при любой мощности 2. Этот тест показывает все результаты (хотя это javascript, а не java)