以下为一个判断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。
解决办法:
- 改为
i%2 != 0
- 改为
(i&1) != 0
(如果不记得 &与 !=运算符的优先级,建议加上括号明确 )