欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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时,输出结果为:
Java 判断奇偶的小细节
众所周知,-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的真假进行奇偶判断。

总结

用偶判断,不用奇判断