关于计算整数是不是偶数奇数的理解
来源:互联网 发布:尼崎事件 知乎 编辑:程序博客网 时间: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
- 关于计算整数是不是偶数奇数的理解
- 计算奇数偶数的个数
- 编写一个程序 输入整数 直到输入0 计算偶数的个数 奇数的个数 和偶数的平均值 与奇数的平均值
- 用 switchcase语句写一个程序 输入整数 直到输入0 计算偶数的个数 奇数的个数 和偶数的平均值 与奇数的平均值
- 交换整数的奇数位和偶数位
- 交换整数的奇数位和偶数位
- 交换整数的奇数位和偶数位
- java 计算奇数和偶数的个数
- 整数数组,奇数在前,偶数在后
- 判断整数是奇数还是偶数
- 求两个整数内(包含两个整数)的偶数平方和及奇数立方和
- Odd - 判断一个整数是不是奇数
- System.Odd - 判断一个整数是不是奇数
- 将一个整数的二进制表示的奇数位与偶数位交换位置
- 定义一个由整数组成的数组,要求求出其中的奇数个数和偶数个数
- C语言整数的二进制偶数位,奇数位和二进制序列的输出
- 输入一个整数,判断这个整数是奇数还是偶数
- 三种分奇数偶数的方法
- 通达OA短信平台,通达OA与天瑞短信平台深度集成,通达OA快速发手机短信,安全可靠
- 树结构中的节点增删改操作后,排序码的重新设置
- selectKey 这个标签主要用于Insert数据时不支持主键自动生成的问题
- 重复子串-LintCode
- java日期工具类1
- 关于计算整数是不是偶数奇数的理解
- Codeforces Round #449 (Div. 2) A-C题解
- MyBatis之java.lang.UnsupportedOperationException异常解决方案
- 禁止 上滑下滑的时候出现微信浏览器的黑色背景
- 批量删除
- Git,GitLab,GitHub,SVN ,CVS,VSS,码云的安装,用法,区别,进阶
- 进程管理API之get_task_pid
- RxJava+Retrofit结合使用(小案例)
- 前端性能优化