java那些小事---用偶數做判斷,不要用基數做判斷


      今天做項目遇到這樣一個奇葩問題:我們先看如下代碼:

int ftcs = dealFtcs(ftcs);
        if(ftcs % 2 == 1){   //奇數
            /*
             * 處理.....
             */
        } 
        else{           //偶數
            /*
             * 處理......
             */
        }
    這個ftcs是需要經過一系列的運算得到的結果,然后再做奇偶判斷,為奇數做相應處理,否則做偶數處理,開始測試還好,但是突然心血來潮輸入一個負數,得到ftcs = -11,但是結果確實轉到偶數處理。我就郁悶了,連續測試了好幾個負數,發現只要是負數就跑到偶數處理去了。通過查找資料發現,java的取余算法如下,模擬算法:

/**
     * @desc 取余模擬算法
     * @param dividend 被除數
     * @param divisor 除數
     * @return
     * @return int
     */
    public static int remainder(int dividend,int divisor){
        return dividend - dividend / divisor * divisor;
    }

      看到這個我笑了,怪不得所有負數都往偶數處理那里跑。

         當ftcs = -11時, -11 – (-11 / 2 * 2) = -1;

         當ftcs = -10時, -10 – (-10 / 2 * 2) = 0;

         ……

      所以對於上面的問題,非常簡單修正,改正如下:

int ftcs = dealFtcs(ftcs);
        if(ftcs % 2 == 0){   //偶數
            /*
             * 處理.....
             */
        } 
        else{           //奇數
            /*
             * 處理......
             */
        }

      所以

1、對於判斷奇偶數,推薦用偶數判斷,不要用奇數判斷。

2、對於簡單的基礎知識,我們也不能忽略,做到知其然且知其所以然。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM