天天看點

判斷偶數的方式這麼多,總有一種能讓你感到意外

作者:龍兒筝

在程式設計的過程中,我們經常會遇到判斷偶數的地方,比如清單判斷偶數位置加個背景等等。以前我一直以為判斷偶數就兩種方式,直到看了網上的各路大佬,我才發現判斷偶數原來還可以這麼玩,簡直是讓我“驚喜連連”呀。下面就來一一介紹,其中前兩種也是最容易想到,也是用得最多的方式。

1.二進制法

我們都知道計算機中的數字都是二進制來表示,各位上的數字不是0就是1,比如5的二進制是101,6是110,7是111,8是1000等等,在此就不一一列舉了。我們發現列舉的這4個數有一個特點,奇數的最後一位是1,偶數的最後一位是0,利用這個特點很容易就能判斷了,代碼實作如下

public boolean isEven(int number) {
    return (number & 1) == 0;
}           

2.取餘法

上學時我們學過,能被2整除的數就是偶數,不能整除的就是奇數。是以我們可以判斷一個數除以2取餘,看餘數是1還是0,這樣也能判斷,代碼實作如下

public boolean isEven(int number) {
    return number % 2 == 0;
}           

這兩種方式在我們的日常開發中是用得最多的,也是最容易了解的,下面幾種方式一般人還真不一定能想到,在此讓大家開開眼界,看看有沒有哪種方式能讓你感到“驚喜”。

3.周遊法

很難想到判斷個偶數還能用到周遊法吧,究竟是周遊誰,怎麼周遊呢?說是周遊法,我覺得叫數數法更好了解吧,啥意思呢?還記得剛學數數的經曆嗎,比如1,2,3……,判斷奇偶數也可以這樣數,比如從0開始就是偶,奇,偶,奇……,代碼實作如下

public boolean isEven(int number) {
    boolean result = true;
    for (int i = 0; i < number; i++) result = !result;
    return result;
}           

看到這個周遊法,讓我想起了一個“經典”的排序算法,睡眠排序法,在此不作解釋,懂得人應該都懂,這兩個放在一起,堪比卧龍鳳雛,睡眠排序法示例如下

判斷偶數的方式這麼多,總有一種能讓你感到意外

4.截取法

我們都知道一個數的個位,若是0,2,4,6,8時,則這個就是偶數,否則就是奇數。你要這麼說也還行,整除10取餘判斷一下就可以了,不過這跟截取有啥關系呢,為啥叫截取法呢?我想象一下發明這種方法的大佬内心獨白:你要整除?整除了還要取餘?怎麼取餘?搞這麼複雜幹什麼,字元串截取不會嗎,直接截取最後一位就行了,哪有那麼複雜。示例如下

判斷偶數的方式這麼多,總有一種能讓你感到意外

5.窮舉法

沒錯,判斷奇偶數也能窮舉,你有多少個場景我就窮舉多少個。額……實在編不下去了,為什麼要用窮舉,各位大佬能了解他為什麼要用窮舉嗎?看這截圖,0到底算奇數還是偶數呢?

判斷偶數的方式這麼多,總有一種能讓你感到意外

驚不驚喜,意不意外,簡簡單單一個奇偶數的判斷,都能玩出花兒來,有時候想想,寫代碼也沒那麼枯燥,當你想找點樂子時,大佬們總會帶點驚喜讓你高興高興。

繼續閱讀