作为伪代码中的一个例子:

if ((a mod 2) == 0)
{
    isEven = true;
}
else
{
    isEven = false;
}

当前回答

虽然可以通过检查值是否为负并纠正它(许多人建议的方法)来进行适当的模运算,但还有一个更紧凑的解决方案。

(a % b + b) % b

这将首先进行模运算,将值限制在-b -> +b范围内,然后加上b以确保值为正,让下一个模运算将其限制在0 -> b范围内。

注:如果b为负数,结果也是负数

其他回答

模运算符是%(百分号)。为了测试均匀性或通常对2的幂做模运算,你也可以使用&(和运算符),比如isEven = !(a & 1)。

在不使用模运算的情况下,代码运行得更快:

public boolean isEven(int a){
    return ( (a & 1) == 0 );
}

public boolean isOdd(int a){
    return ( (a & 1) == 1 );
}

另外,mod可以这样使用:

int a = 7;
b = a % 2;

B等于1。因为7% 2 = 1。

在Java中,mod操作可以这样执行:

Math.floorMod(a, b)

注意: mod操作不同于余数操作。在Java中,剩余的操作可以这样执行:

a % b

对于非负整数,可以使用余数运算符%,而不是语义略有不同的模运算符。具体的例子是:

if ((a % 2) == 0)
{
    isEven = true;
}
else
{
    isEven = false;
}

这可以简化为一行代码:

isEven = (a % 2) == 0;