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爲偶數這個結果。

 

發佈了30 篇原創文章 · 獲贊 4 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章