关于计算整数是不是偶数奇数的理解

来源:互联网 发布:尼崎事件 知乎 编辑:程序博客网 时间:2024/06/05 11:35

最近看到一篇文章判断整数是不是偶数奇数的,突然想到以前没有这个注意,坐下总结:

import java.util.Scanner;public class Client21 {    public static void main(String[] args) {        // 接收键盘输入参数        Scanner input = new Scanner(System.in);        System.out.println("输入多个数字判断奇偶:");        while (input.hasNextInt()) {            int i = input.nextInt();            String str = i + "-->" + (i % 2 == 1 ? "奇数" : "偶数");            System.out.println(str);        }    }}

如果代码这样写会不会有问题?肯定是有问题的,不然不会这样做个demo

输入多个数字,然后判断每个数字的奇偶性,不能被2整除的就是奇数,其它的都是偶数,完全是根据奇偶数的定义编写的程序,我们开看看打印的结果:

  输入多个数字判断奇偶:1  2  0  -1 -2     1-->奇数    2-->偶数    0-->偶数     -1-->偶数       -2-->偶数

前三个还很靠谱,第四个参数-1怎么可能是偶数呢,这Java也太差劲了吧。如此简单的计算也会出错!别忙着下结论,我们先来了解一下Java中的取余(%标识符)算法,模拟代码如下:

// 模拟取余计算,dividend被除数,divisor除数    public static int remainder(int dividend, int divisor) {        return dividend - dividend / divisor * divisor;    }

看到这段程序,大家都会心的笑了,原来Java这么处理取余计算的呀,根据上面的模拟取余可知,当输入-1的时候,运算结果为-1,当然不等于1了,所以它就被判定为偶数了,也就是我们的判断失误了。问题明白了,修正也很简单,改为判断是否是偶数即可。代码如下:     i % 2 == 0 ? "偶数" : "奇数";

注意:对于基础知识,我们应该"知其然,并知其所以然"。用偶数判断不要用奇数判断。





阅读全文
0 0
原创粉丝点击