判断奇数,java陷阱
/**
-
判断是否为奇数
-
@author husky
/
public class IsOdd {
public static void main(String[] args) {
int demo1 = 3;
int demo2 = -3;
System.out.println("isOddBefore demo1: " + isOddBefore(demo1)); //true
System.out.println("isOddBefore demo2: " + isOddBefore(demo2)); //false
System.out.println("isOddAfter demo1: " + isOddAfter(demo1)); //true
System.out.println("isOddAfter demo2: " + isOddAfter(demo2)); //true
/
* 结果:
* isOddBefore demo1: true
* isOddBefore demo2: false
* isOddAfter demo1: true
* isOddAfter demo2: true
*/
}/**
- 解析:
- 该方法在传入的参数为负奇数时,判断出错;
- java对" % "的定义 (a/b) * b + (a % b) == a;
- 意思是b整除a,将商乘以b,然后加上余数能够得到最初的值;与java的截尾整数整除操作符'/'相结合
- 可以意味着:当取余操作返回一个非0的结果时,它与左操作符具有相同的正负号。
- 因此当传入一个负奇数的时候返回的是-1,则结果得到的是false
- @param demo
*/
public static boolean isOddBefore(int demo) {
return demo % 2 == 1;
}
/**
- 解决:
- 这一题解决只要与0比较就可以了
- 但遇到判读是否能被其他的数整除的时候就需要注意了;
- @param demo
*/
public static boolean isOddAfter(int demo) {
return demo % 2 != 0;
}
}