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为偶数这个结果。

 

你可能感兴趣的:(J2SE)