Java中mod的语法是什么?

251

作为伪代码示例:

if ((a mod 2) == 0)
{
    isEven = true;
}
else
{
    isEven = false;
}
17个回答

4

3

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;
}

3
此外,mod可以这样使用:
int a = 7;
b = a % 2;

b将会等于1。因为7 % 2 = 1


在面向初学者的示例中,且没有输出的情况下使用复合运算符可能是一个错误。 - Stu Thompson

2

Java中,可以通过以下方式执行模运算

最初的回答:

Math.floorMod(a, b)

注意:取模运算(mod operation)与求余运算(remainder operation)是不同的。在Java中,可通过以下方式执行求余运算:

a % b

并不完全一样... Math.floorMod() 的 javadoc 中有这样的描述:floor modulus 是 x - (floorDiv(x, y) * y),与除数 y 同号,且在 -abs(y) < r < +abs(y) 范围内。 因此它并不完全等同于数学模运算。但是,在相同方法的 Javadoc 中有一种获取正结果的方法:如果参数的符号未知且需要正模,则可以计算为 (floorMod(x, y) + abs(y)) % abs(y) - WesternGun
@WesternGun 这可能是正确的,但是如果您知道模数是正数,则floorMod操作将按预期工作。还有用于long值的floorMod,对于更大的值则有BigInteger - Maarten Bodewes

1

Another way is:

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

但最简单的方法仍然是:


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

就像@Steve Kuo所说的。


-1
取模运算符是%(百分号)。要测试偶数性或通常进行2的幂次取模,也可以使用&(与运算符),例如 isEven = !( a & 1 )。

-3

与 @Cody 的代码相比,另一种选择:

使用模运算符:

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

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


2
这是一个取余运算符,而不是模运算符。 - user207421
@EJP 好的。那么模运算符是什么? - TheRealChx101

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接