JAVA面试题之判断奇偶数

JAVA一道面试题:

在判断一个数是奇数还是偶数时,应该选择哪一种方式来判断呢?代码如下()

A:

int val=//一个数字

 if(val%2==0)

   System.out.println("偶数");

else

  System.out.println("奇数");


 

 

B:

int val=//一个数字

 if(val%2==1)

   System.out.println("奇数");

else

  System.out.println("偶数");


很多人都会觉得这2种方式都一样吧。其实不然。当一个整数大于0的时候.2种方式的结果一致。但是当这个整数小于了0那么结果有分歧了。

选A的方式-1%2则为-1不等于0所以他为奇数是对的。但是选B的方式和-1%2却不等于1那么结果-1是偶数。

那么为什么B方式有这样的错误呢?模运算的底层算法是

A%B--------------------return A - (A/B) * B

那么-1%2结果当然是-1。所以判断语句会进入else,造成了-1为偶数这个结果。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值