java中jmod是什么,modulo - j中mod的语法是什么

modulo - j中mod的语法是什么

作为伪代码的一个例子:

if ((a mod 2) == 0)

{

isEven = true;

}

else

{

isEven = false;

}

15个解决方案

333 votes

对于非负整数,可以使用余数运算符%.对于您的确切示例:

if ((a % 2) == 0)

{

isEven = true;

}

else

{

isEven = false;

}

这可以简化为单行:

isEven = (a % 2) == 0;

Cody Hatch answered 2019-03-06T02:38:05Z

110 votes

以下是最小Java代码中伪代码的表示;

boolean isEven = a % 2 == 0;

我现在将其分解为其组件。 Java中的模数运算符是百分比字符(%)。 因此,获取int%int将返回另一个int。 double equals(==)运算符用于比较值,例如一对int并返回一个布尔值。 然后将其分配给布尔变量'isEven'。 根据运算符优先级,将在比较之前评估模数。

martinatime answered 2019-03-06T02:38:36Z

88 votes

由于其他人已经给出了答案,我将添加一些额外的背景。 %“模数”运算符实际上执行余数运算。 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);

在这里,我使用了bitwise-and运算符,并以选项2中显示的简洁形式表示它。在选项1的表单中重写它(以及选项3的表单)作为练习留给读者。;)

希望有所帮助。

Rob Rolnick answered 2019-03-06T02:40:03Z

30 votes

要使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;

}

Zom-B answered 2019-03-06T02:40:37Z

12 votes

虽然可以通过检查值是否为负值来进行正确的模数,如果是(正如许多人所建议的那样),则可以更正它,但是有一个更紧凑的解决方案。

(a % b + b) % b

这将首先进行模数,将值限制为-b - >; + b范围然后添加b以确保该值为正,让下一个模数将其限制为0 - > b范围。

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

Stefan T answered 2019-03-06T02:41:20Z

11 votes

Java实际上没有C语言的模运算符。 Java中的%是余数运算符。 在正整数上,它的工作方式与模数完全相同,但它在负整数上的工作方式不同,与模数不同,它也可以用于浮点数。 尽管如此,除了正整数之外,很少使用%,所以如果你想把它称为模数,那么请随意!

Greg Charles answered 2019-03-06T02:41:45Z

11 votes

不使用modulo,代码运行得更快:

public boolean isEven(int a){

return ( (a & 1) == 0 );

}

public boolean isOdd(int a){

return ( (a & 1) == 1 );

}

michael answered 2019-03-06T02:42:09Z

6 votes

if (a % 2 == 0) {

} else {

}

J D OConal answered 2019-03-06T02:42:26Z

4 votes

你应该在使用'remainder'运算符%之前检查规范:

[http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.17.3]

// bad enough implementation of isEven method, for fun. so any worse?

boolean isEven(int num)

{

num %= 10;

if(num == 1)

return false;

else if(num == 0)

return true;

else

return isEven(num + 2);

}

isEven = isEven(a);

kioto answered 2019-03-06T02:42:58Z

3 votes

另外,mod可以像这样使用:

int a = 7;

b = a % 2;

b等于1.因为7 % 2 = 1。

jjnguy answered 2019-03-06T02:43:29Z

3 votes

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;

}

eljenso answered 2019-03-06T02:43:55Z

1 votes

模运算符是%(百分号)。 要测试均匀度或通常以2的幂为模,你也可以使用&amp; (和运算符)就像isEven =!(a&amp; 1)。

jjrv answered 2019-03-06T02:44:24Z

1 votes

另一种方式是:

boolean isEven = false;

if((a % 2) == 0)

{

isEven = true;

}

但最简单的方法仍然是:

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

就像@Steve Kuo说的那样。

brothers28 answered 2019-03-06T02:45:00Z

0 votes

在Java中,它是public static int floorMod​(int x, int y)运算符:15.17.3。 剩余运营商%

请注意,public static int floorMod​(int x, int y)类中也有public static int floorMod​(int x, int y),对于具有不同符号的参数,它将给出%的不同结果:

public static int floorMod​(int x, int y)

Roland answered 2019-03-06T02:45:39Z

-2 votes

@Cody代码的替代方法:

使用模数运算符:

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

我认为这比编写if / else要好得多,因为重复次数少了很多。 未使用的灵活 它确实需要更多的脑力来检查,但isEven的良好命名补偿。

Jay Bazuzi answered 2019-03-06T02:46:27Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值