位置:首頁 > 軟件操作教程 > 編程開發(fā) > Java > 問題詳情

Java操作應(yīng)用——奇數(shù)判斷

提問人:ylm發(fā)布時間:2020-09-29

奇數(shù)可以被定義為被2整除余數(shù)為1的整數(shù)。表達(dá)式 num% 2 計算的是 num整除 2 時所產(chǎn)生的余數(shù),因此看起來這個程序應(yīng)該能夠正確運(yùn)轉(zhuǎn)。遺憾的是,它不能;它在四分之一的時間里返回的都是錯誤的答案。

為什么是四分之一?因?yàn)樵谒械?int 數(shù)值中,有一半都是負(fù)數(shù),而 isOdd 方法對于對所有負(fù)奇數(shù)的判斷都會失敗。在任何負(fù)整數(shù)上調(diào)用該方法都回返回 false ,不管該整數(shù)是偶數(shù)還是奇數(shù)。

這是 Java 對取余操作符(%)的定義所產(chǎn)生的后果。該操作符被定義為對于所有的 int 數(shù)值 a 和所有的非零 int 數(shù)值b,都滿足下面的恒等式:

(a / b) * b + (a % b) == a

現(xiàn)在進(jìn)行修改如下:

 

使用此代碼,不僅是解決了奇數(shù)的負(fù)的問題,而且這個代碼也高度優(yōu)化。因?yàn)?,算術(shù)和邏輯運(yùn)算的速度更快,比除法和乘法,結(jié)果取得了更快。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部