什麼Java方法需要int
並返回+1或-1?其標準是int
是正面還是負面。我瀏覽了文檔,但是我很難閱讀,而且找不到它。我知道我在某處看過它。什麼Java方法需要一個int並返回+1或-1?
回答
Math.signum(double i)
返回參數的符號函數;如果參數爲零,則爲零;如果參數大於零,則爲1.0;如果參數小於零,則爲-1.0。 特殊情況:
- 如果參數爲
NaN
,那麼結果是NaN
。 - 如果參數爲正零或負零,則結果與參數相同。
參數:
- d - 浮點值,其正負號將被返回
返回:參數的符號函數
時間:1.5
Math.signum(value)
將做的伎倆,但因爲它返回浮動或雙(根據par ameter),你將不得不投它:
int sign = (int)Math.signum(value);
編輯:剛纔檢查,從JDK 1.5您也可直接:
Integer.signum(value);
使用Integer.signum(int i)
,但如果你想自定義在線位代碼:
int ans = i < 0 ? -1 : 1;
如果你想0也:
int ans = i == 0 ? 0 : (i < 0 ? -1 : 1);
這應該是'int ans'兩個。 – defectivehalt 2010-03-11 17:34:10
垃圾,你當然是正確的 - 編輯:) – 2010-03-11 17:35:09
不要這樣做 - 它會讓別人停下來思考 - 這是你在分析一些bug的過程中想要的最後一件事。使它成爲一個外部方法或將它分解爲一個if(因爲無論如何,該數字可能只是輸入到if語句中,簡單地說(如果我<0)else if(i> 0)else)會更清楚。 。 – 2010-03-11 17:55:03
爲了好玩:
return (i > 0) ? 1 : ((i < 0) ? -1 : 0);
嚴格評估爲-1或1,和冷卻器(可能是更有效的太)比n < 0 ? -1: 1
:
(n >> 31) | 1
如果你想使用它的long
太:
(n >> 63) | 1
- 1. 爲什麼+「1」返回一個int?
- 2. 將2個int數組傳遞給方法並返回1個int數組--java
- 3. 爲什麼方法返回-1?
- 4. 爲什麼(INT)@ 「 - 1」 的floatValue]不返回-1
- 5. 需要一個方法返回一個int
- 6. 爲什麼(true && 1)返回1,但(1 && true)返回true?
- 7. JAVA - 爲什麼== 「1」 返回false
- 8. 爲什麼Java BigDecimal返回1E + 1?
- 9. 爲什麼getdate返回1 \ 1 \ 1900
- 10. 爲什麼1!= 1返回true?
- 11. `[1] == [1]`返回「false」並且`[1] == 1`返回「true」?
- 12. 爲什麼一個方法需要返回值?
- 13. 爲什麼IndexOf返回-1?
- 14. 爲什麼ISNUMERIC('。')返回1?
- 15. 爲什麼UINT_MAX返回-1?
- 16. 爲什麼sqlitedatabase.insert返回-1?
- 17. 爲什麼[] .push([])返回1?
- 18. 爲什麼retainCount返回-1
- 19. 爲什麼GetCurrentProcess返回-1?
- 20. 爲什麼HttpURLConnection.getResponseCode()返回1?
- 21. SDL_BlitSurface()返回-1 ...爲什麼?
- 22. charAt方法返回一個整數。需要轉換爲int
- 23. 爲什麼(1 + 1)和1返回1而不是2?
- 24. 比較int和返回1
- 25. 爲什麼OpenCV4Android的pointPolygonTest()方法爲每個像素返回-1?
- 26. Postgresql C函數需要一個FLOAT8 []並返回一個INT []?
- 27. 如何返回一個需要2個參數的函數1
- 28. Xpath - 爲什麼只返回1個值?
- 29. Mysql返回多行,只需要1
- 30. Java - 已修改的compareTo方法說它需要返回一個int,但它應該返回一個
怎麼樣0,它是積極的還是消極的? – fortran 2010-03-11 17:25:59
@fortran:主流的'signum'回答也會照顧到這一點。 – 2010-03-11 17:27:17
它在0上返回0。 – Halo 2010-03-11 17:27:19