java那些小事---用偶数做判断,不要用基数做判断
2013-10-09 19:36
417 查看
今天做项目遇到这样一个奇葩问题:我们先看如下代码:
这个ftcs是需要经过一系列的运算得到的结果,然后再做奇偶判断,为奇数做相应处理,否则做偶数处理,开始测试还好,但是突然心血来潮输入一个负数,得到ftcs = -11,但是结果确实转到偶数处理。我就郁闷了,连续测试了好几个负数,发现只要是负数就跑到偶数处理去了。通过查找资料发现,java的取余算法如下,模拟算法:
看到这个我笑了,怪不得所有负数都往偶数处理那里跑。
当ftcs = -11时, -11 – (-11 / 2 * 2) = -1;
当ftcs = -10时, -10 – (-10 / 2 * 2) = 0;
……
所以对于上面的问题,非常简单修正,改正如下:
所以
1、对于判断奇偶数,推荐用偶数判断,不要用奇数判断。
2、对于简单的基础知识,我们也不能忽略,做到知其然且知其所以然。
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、对于简单的基础知识,我们也不能忽略,做到知其然且知其所以然。
相关文章推荐
- Java用三元运算符判断奇数和偶数的简单实现
- 在Java中判断一个数是奇数还是偶数
- Java作业:输入一个数字判断他是奇数还是偶数
- JAVA 实例 判断偶数和判断瑞年
- 在java中判断奇数和偶数
- 01.JAVA 小程序—判断一个数是否为偶数
- java中奇偶数的判断
- java中奇偶数的判断
- Java之戳中痛点 - (3)三目运算符的两个操作数类型尽量一致 Java之戳中痛点 - (4)i++ 和 ++i 探究原理 Java之戳中痛点 - (1)易变业务使用脚本语言编写 Java之戳中痛点 - (2)取余用偶判断,不要用奇判断 (5)switch语句break不能忘以及default不同位置的用法 Java之戳中痛点 - (7)善用Java整型缓存池
- java 判断类型instanceof,不要再用try catch了
- case逻辑判断基数还是偶数
- JavaDay02--Homework(判断闰年+百钱百鸡+指定基数和次数求和)
- java中奇偶数的判断
- Java基础应用之运算符(用三元运算符判断奇数和偶数)
- 自定义函数判断给的整数是基数还是偶数
- Java用三元运算符判断奇数和偶数
- java经典算法_032判断一个数字是奇数还是偶数
- 调整数组顺序使基数位于偶数前面java实现
- java中奇偶数的判断
- java那些小事---java的四舍五入