奇数性
下面的方法是为了验证一个整数是否为奇数,如下:
public static boolean isOdd(int number){
return number % 2 == 1;
}
但是该方法可行吗?
答案是否定的,当number为负奇数时,该方法就失效了,因为负奇数除以2时余数是-1,不等于1
这是java取余(%)算法中定义的结果,改操作符被定义为
对于任意整数a和所有的非0的整数b,满足:
(a/b)*b + a%b = a
整数a恒等于(a除以b的余数)+(a除以b的商),但是取余操作的结果不为0时,它的符号正负性和被除数一致[注:Java截尾整数操作规范],也就是说当a为奇负数时,取余的结果总是-1,上述方法总是false。
知道这个原因,就可以改正上面的方法了,将
number % 2 == 1;
改成number %2 !=0