打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
java那些小事---用偶数做判断,不要用基数做判断

      今天做项目遇到这样一个奇葩问题:我们先看如下代码:

int ftcs = dealFtcs(ftcs);        if(ftcs % 2 == 1){   //奇数            /*             * 处理.....             */        }         else{           //偶数            /*             * 处理......             */        }
    这个ftcs是需要经过一系列的运算得到的结果,然后再做奇偶判断,为奇数做相应处理,否则做偶数处理,开始测试还好,但是突然心血来潮输入一个负数,得到ftcs = -11,但是结果确实转到偶数处理。我就郁闷了,连续测试了好几个负数,发现只要是负数就跑到偶数处理去了。通过查找资料发现,java的取余算法如下,模拟算法:

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

      看到这个我笑了,怪不得所有负数都往偶数处理那里跑。

         当ftcs = -11时, -11 – (-11 / 2 * 2) = -1;

         当ftcs = -10时, -10 – (-10 / 2 * 2) = 0;

         ……

      所以对于上面的问题,非常简单修正,改正如下:

int ftcs = dealFtcs(ftcs);        if(ftcs % 2 == 0){   //偶数            /*             * 处理.....             */        }         else{           //奇数            /*             * 处理......             */        }

      所以

1、对于判断奇偶数,推荐用偶数判断,不要用奇数判断。

2、对于简单的基础知识,我们也不能忽略,做到知其然且知其所以然。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
628,两数相除
Excel教程:MOD函数经常做的一些事
JAVA提取公因数
初中数学知识点:正数与负数
MS
Sql Server 里的向上取整、向下取整、四舍五入取整的实例!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服