2010-03-11 59 views
13

什麼Java方法需要int並返回+1或-1?其標準是int是正面還是負面。我瀏覽了文檔,但是我很難閱讀,而且找不到它。我知道我在某處看過它。什麼Java方法需要一個int並返回+1或-1?

+0

怎麼樣0,它是積極的還是消極的? – fortran 2010-03-11 17:25:59

+0

@fortran:主流的'signum'回答也會照顧到這一點。 – 2010-03-11 17:27:17

+0

它在0上返回0。 – Halo 2010-03-11 17:27:19

回答

55
+0

你能把我鏈接到相關文檔 – David 2010-03-11 17:23:45

+2

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html#signum%28int%29 – Jack 2010-03-11 17:24:07

+2

http:// java。 sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html#signum%28int%29 – Halo 2010-03-11 17:24:57

0

Math.signum(double i)

返回參數的符號函數;如果參數爲零,則爲零;如果參數大於零,則爲1.0;如果參數小於零,則爲-1.0。 特殊情況:

  • 如果參數爲NaN,那麼結果是NaN
  • 如果參數爲正零或負零,則結果與參數相同。

參數:

  • d - 浮點值,其正負號將被返回

返回:參數的符號函數

時間:1.5

5

Math.signum(value)將做的伎倆,但因爲它返回浮動或雙(根據par ameter),你將不得不投它:

int sign = (int)Math.signum(value); 

編輯:剛纔檢查,從JDK 1.5您也可直接:

Integer.signum(value); 
0

使用Integer.signum(int i),但如果你想自定義在線位代碼:

int ans = i < 0 ? -1 : 1;

如果你想0也:

int ans = i == 0 ? 0 : (i < 0 ? -1 : 1);

+0

這應該是'int ans'兩個。 – defectivehalt 2010-03-11 17:34:10

+0

垃圾,你當然是正確的 - 編輯:) – 2010-03-11 17:35:09

+1

不要這樣做 - 它會讓別人停下來思考 - 這是你在分析一些bug的過程中想要的最後一件事。使它成爲一個外部方法或將它分解爲一個if(因爲無論如何,該數字可能只是輸入到if語句中,簡單地說(如果我<0)else if(i> 0)else)會更清楚。 。 – 2010-03-11 17:55:03

-1

爲了好玩:

return (i > 0) ? 1 : ((i < 0) ? -1 : 0); 
1

嚴格評估爲-1或1,和冷卻器(可能是更有效的太)比n < 0 ? -1: 1

(n >> 31) | 1 

如果你想使用它的long太:

(n >> 63) | 1 
相關問題