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

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

当前回答

为了让Java的% (REM)操作像MOD一样工作,对于负X和正Y值,你可以使用以下方法:

private int mod(int x, int y)
{
    int result = x % y;
    if (result < 0)
    {
        result += y;
    }
    return result;
}

或者使用三元操作符(更短,但在某些情况下不可能或效率更低):

private int mod(int x, int y)
{
    int result = x % y;
    return result < 0? result + y : result;
}

其他回答

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

(a % b + b) % b

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

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

来自@Cody的代码的替代方案:

使用模运算符:

bool isEven = (a % 2) == 0;

我认为这是比写if/else更好的代码,因为有更少的重复和未使用的灵活性。它确实需要更多的脑力来检查,但isEven的良好命名弥补了这一点。

下面是用最少的Java代码表示的伪代码;

boolean isEven = a % 2 == 0;

现在我将把它分解成各个部分。Java中的模运算符是百分比字符(%)。因此,取一个int % int返回另一个int。双等号(==)操作符用于比较值,例如一对int,并返回一个布尔值。然后将其分配给布尔变量'isEven'。根据运算符优先级,在比较之前计算模量。

Java中的余数运算符是%,取模运算符可以表示为

public int mod(int i, int j)
{
  int rem = i % j;
  if (j < 0 && rem > 0)
  {
    return rem + j;
  }
  if (j > 0 && rem < 0)
  {
    return rem + j;
  }
  return rem;
}

为了让Java的% (REM)操作像MOD一样工作,对于负X和正Y值,你可以使用以下方法:

private int mod(int x, int y)
{
    int result = x % y;
    if (result < 0)
    {
        result += y;
    }
    return result;
}

或者使用三元操作符(更短,但在某些情况下不可能或效率更低):

private int mod(int x, int y)
{
    int result = x % y;
    return result < 0? result + y : result;
}