取余判断原则:取余用偶判断,不要用奇判断

先看一个 程序:

package com.test;
import java.util.Scanner; public class t1 {
public static void main(String[] args) {
//接收键盘输入
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
int i = in.nextInt();
System.out.println(i%2==1?"奇数":"偶数");
}
}
}

再看一下结果:

这里就有疑问了,结果怎么出现了-1为偶数

看一下java取余算法(%标识符)怎么计算取余,*模拟*方法实现:

//被除数 dividend 除数divisor
public static int remaindar(int dividend,int divisor){
return dividend - dividend/divisor*divisor;
}

分析方法发现 -1取余还是 -1,所以被认定为偶数;

正确写法:

package com.test;
import java.util.Scanner; public class t1 {
public static void main(String[] args) {
//接收键盘输入
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
int i = in.nextInt();
System.out.println(i%2==0?"偶数":"奇数");
}
}
}

结果:

Java之戳中痛点 - (2)取余用偶判断,不要用奇判断的更多相关文章

  1. 提高java编程质量 - (二)取余用偶判断,不要用奇判断

    取余判断原则:取余用偶判断,不要用奇判断 先看一个 程序: package com.test; import java.util.Scanner; public class t1 { public s ...

  2. Java之戳中痛点 - (4)i++ 和 ++i 探究原理

    先看一个例子: package com.test; public class AutoIncrement { public static void main(String[] args) { int ...

  3. Java之戳中痛点 - (7)善用Java整型缓存池

    先看一段代码: package com.test; import java.util.Scanner; public class IntegerCache { public static void m ...

  4. Java之戳中痛点 - (6)避免类型自动转换,例如两个整数相除得浮点数遇坑

    先来看一个例子: package com.test; public class calculate { /** * 光速30万公里/秒 */ public static final int LIGHT ...

  5. Java之戳中痛点 - (1)易变业务使用脚本语言编写

    脚本语言的3大特征: 1.灵活:脚本语言一般是动态类型,可以不声明变量类型直接使用,也可以在运行期改变类型:2.便捷:脚本语言是解释性语言,在运行期变更非常方便,而不用重启服务3.简单:脚本语言语法比 ...

  6. Java之戳中痛点 - (8)synchronized深度解析

    概览: 简介:作用.地位.不控制并发的影响 用法:对象锁和类锁 多线程访问同步方法的7种情况 性质:可重入.不可中断 原理:加解锁原理.可重入原理.可见性原理 缺陷:效率低.不够灵活.无法预判是否成功 ...

  7. Java之戳中痛点 - (5)switch语句break不能忘以及default不同位置的用法

    先看一段代码: public class Test{ public static void main(String[] args){ System.)); } } public static Stri ...

  8. Java之戳中痛点 - (3)三目运算符的两个操作数类型尽量一致

    先看一个例子: package com.test; public class TernaryOperator { public static void main(String[] args) { in ...

  9. java学习--高效的除模取余运算(n-1)&hash

    没有测试过使用取余运算符和位运算符都做同一件事时的时间效率! 取余运算符% 如3除以2取余数 a = a%; 结果为1 上面是传统的方式进行求余运算. 需要先将10进制转成2进制到内存中进行计算,然后 ...

随机推荐

  1. ssrf小记

    SSRF(Server-Side Request Forgery, 服务端请求伪造),攻击者伪造服务端发起的请求并执行,从而获得一些数据或进行攻击 一.危害 1.对内网的端口和服务进行扫描,对主机本地 ...

  2. 4269: 再见Xor

    4269: 再见Xor 链接 分析: 和SGU 275唯一不同的就是需要求出次小值,那么异或出最大值的所有元素中,找到最小的,去除即可. 代码: #include<bits/stdc++.h&g ...

  3. ip4addr_ntoa和不可重入函数

    在网络中,有一个转换IP地址到ASIIC字符串的函数,该函数的返回值所指向的ASIIC字符串驻留在静态内存中,所以该函数不可重入. 通俗的讲,在多任务系统中,一个任务执行在调用运行这个函数的时候,其他 ...

  4. win10子系统Ubuntu18.04下安装图形界面

    前提:windows 10 已经安装WSL(windows subsystem for linux),并能正确运行Bash. 要想使用Linux的图形用户界面通常有两种方法,一种是使用X-Window ...

  5. react实现换肤功能

    一.目标   提供几种主题色给用户选择,然后根据用户的选择改变应用的主题色: 二.实现原理   1.准备不同主题色的样式文件:   2.将用户的选择记录在本地缓存中:   3.每次进入应用时,读取缓存 ...

  6. CF 55D

    Volodya is an odd boy and his taste is strange as well. It seems to him that a positive integer numb ...

  7. LINQ学习笔记——(2)Lambda表达式

    最基本的 Lambda 表达式语法: (参数列表)=>{方法体} 说明:   参数列表中的参数类型可以是明确类型或者是推断类型   如果是推断类型,则参数的数据类型将由编译器根据上下文自动推断出 ...

  8. ubuntu 开热点

    原文地址:https://www.cnblogs.com/king-ding/archive/2016/10/09/ubuntuWIFI.html 今天教大家一个简单方法让ubuntu发散wifi热点 ...

  9. DP入门(1)——数字三角形问题

    一.问题描述 如上图所示,有一个由非负整数组成的三角形,第一行只有一个数,除了最下行之外每个数的左下方和右下方各有一个数.现请你在此数字三角形中寻找一条从首行到最下行的路径,使得路径上所经过的数字之和 ...

  10. 软件工程项目组Z.XML会议记录 2013/10/22

    软件工程项目组Z.XML会议记录 [例会时间]2013年10月22日星期二21:00-22:30 [例会形式]小组讨论 [例会地点]三号公寓楼会客厅 [例会主持]李孟 [会议记录]周敏轩 会议整体流程 ...