Поскольку все остальные уже дали ответ, я добавлю немного дополнительного контекста. % оператор "модуль" фактически выполняет оставшуюся операцию. Разница между mod и rem тонкая, но важная.
(- 1 mod 2) обычно дает 1. Более конкретно, учитывая два целых числа, X и Y, операция (X mod Y) имеет тенденцию возвращать значение в диапазоне [0, Y). Иными словами, модуль X и Y всегда больше или равен нулю и меньше Y.
Выполнение той же операции с оператором «%» или rem сохраняет знак значения X. Если X отрицательно, вы получите результат в диапазоне (-Y, 0]. Если X положительно, вы получите результат в диапазоне [0, Y).
Часто это тонкое различие не имеет значения. Возвращаясь к вашему вопросу о коде, однако, есть несколько способов решения проблемы «ровности».
Первый подход хорош для начинающих, потому что он особенно многословен.
// Option 1: Clearest way for beginners
boolean isEven;
if ((a % 2) == 0)
{
isEven = true
}
else
{
isEven = false
}
Второй подход лучше использует язык и приводит к более лаконичному коду. (Не забывайте, что оператор == возвращает логическое значение.)
// Option 2: Clear, succinct, code
boolean isEven = ((a % 2) == 0);
Третий подход здесь для полноты и использует оператор троичный . Хотя троичный оператор часто очень полезен, в этом случае я считаю второй подход более предпочтительным.
// Option 3: Ternary operator
boolean isEven = ((a % 2) == 0) ? true : false;
Четвертый и последний подход заключается в использовании знаний о двоичном представлении целых чисел . Если младший бит равен 0, то число является четным. Это можно проверить с помощью оператора поразрядно-и (&). Хотя этот подход является самым быстрым (вместо деления вы делаете простую битовую маскировку), он, пожалуй, немного сложен для новичка.
// Option 4: Bitwise-and
boolean isEven = ((a & 1) == 0);
Здесь я использовал побитовый оператор -и и представил его в краткой форме, показанной в варианте 2. Переписывание его в форме варианта 1 (и, альтернативно, в варианте 3) оставлено читателю в качестве упражнения. ;)
Надеюсь, это поможет.