谜题1:奇偶性

来源:互联网 发布:企业版域名注册通 编辑:程序博客网 时间:2024/06/07 20:21

以下为一个判断int类型变量是否为奇数的方法

public static boolean isOdd(int i) {    return i % 2 == 1;}

存在的问题:当i为负奇数时,方法返回的结果错误。

对于java中的%运算符,满足以下等式:

(a / b) * b + (a % b) == a

也就是说,表达式 a%b结果的符号永远与a相同。因此当a为负奇数时,a%2的结果为-1。

解决办法:

  1. 改为 i%2 != 0
  2. 改为 (i&1) != 0 (如果不记得 &与 !=运算符的优先级,建议加上括号明确 )