Java 判断奇偶的小细节
程序员文章站
2022-04-02 18:13:00
...
Java 判断奇偶的小细节
众所周知,能被2整除的数就是偶数,不能被2整除的数就是奇数。在Java中经常使用对2进行“%”操作,根据结果进行判断。
大多数人理所当然地会想到:
i % 2 == 0 // 是偶数
i % 2 == 1 // 是奇数
但是这是正确的麽?我们看下面的一个例子:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()){
int i = in.nextInt();
String str = i + "->" + (i%2 == 1 ? "奇数" : "偶数");
String str2 = i + "->" + (remainder(i,2) == 1 ? "奇数" : "偶数");
System.out.println(str);
System.out.println(str2);
}
}
当输入数字为-1、-3、1、-2时,输出结果为:
众所周知,-1、-3为奇数。那么为什么会出现这种结果呢,我们可以从Java取余的底层源代码进行分析:
//模拟Java取余算法
public static int remainder(int dividend, int divisor){
return dividend - dividend / divisor * divisor;
}
-
当dividend为负数,divisor=2时:若dividend为奇数,结果为-1;若dividend为偶数,结果为0。
-
当dividend为正数,divisor=2时:若dividend为奇数,结果为1;若dividend为偶数,结果为0。
由以上两种情况可以看出,正负偶数在计算之后的返回值都是0;而正负奇数在计算之后的返回值并不一致。所以当使用取余结果为1或是-1进行奇数判断是不可取的,在Java开发中,经常使用i%2 == 0的真假进行奇偶判断。
总结
用偶判断,不用奇判断
上一篇: 跳跃表的原理及Java实现
下一篇: vuejs2.0 Vuex 实际应用
推荐阅读
-
Java的常见误区与细节
-
网站建设的小细节分享:网站开启搜索功能
-
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)_php技巧
-
mysql-请问:用java代码把不同的excel形式加载到MySQL数据库中(循环判断空就停止)?谢谢!
-
Java 判断实体对象及所有属性是否为空的操作
-
mysql-请问:用java代码把不同的excel形式加载到MySQL数据库中(循环判断空就停止)?谢谢!
-
Java 判断IP地址的合法性实例详解
-
java中的hashCode方法小例子
-
java判断String类型是否能转换为int的方法
-
JAVA中,如何判断一个字符串中包含的字符在另一个字符前面?