2012-10-12 79 views
-6

我有兩個整數值,我想在Java中返回這兩個值的差異。如何在Java中將int值轉換爲長整型值?

可能嗎?

+12

你的標題和問題相互矛盾。 –

+0

你可以自由地從長返回方法返回一個int。你爲什麼不試試呢?如果最明顯的事情失敗了,那麼請張貼失敗的代碼。 –

+0

您的問題標題與描述相矛盾。 如果你的描述是正確的 - 那麼看看@juergen d的答案,這是正確的。 如果您需要別的東西,請務必正確編輯問題 – peshkira

回答

10

您可以將結果只分配給長:

long result = intval2 - intval1; 
+0

對不起,不起作用 –

+0

爲什麼 - 你得到什麼錯誤? –

+5

「它不工作」這並沒有告訴我們任何事情。你能舉一個例子,說明它何時無法工作,你期望什麼以及你得到了什麼? –

0
int val1=10; 

int val2=6; 

long val3 = (long) val1 - val2; 
+0

他/她在詢問差異。計數差異在哪裏? –

+0

不是所有的「拳擊」,因爲你正在使用類的版本'整數'/'長' – weston

+2

哦問題標題和問題主體相互矛盾。 –

0

如果你有大的整數,則可以使用兩個Integer.longValue(),簡單地減去這些值。

-1

簡單,轉換爲長期減:

public long diff(int i1, int i2) { 
    return ((long) i1) - i2; 
} 

自動裝箱需要包裝的保健/展開所需

+1

這裏沒有拳擊嗎?只是簡單的演員。 – weston

+0

如果返回值存儲在包裝器變量中,或者參數將是包裝器實例,則會出現此情況。也許我的句子abount autoboxing是有點誤導。我添加了這個句子,因爲問題*標題*(它談到資本整數/長)。 – Durandal

+0

我明白了,問題標題與問題不符。這是造成havok! – weston

1

你可以做

long difference = (long) i1 - i2; 

,如果你需要的絕對差值

long difference = Math.abs((long) i1 - i2); 

例如

int i1 = 2000000000; 
int i2 = -2000000000; 
long difference = Math.abs((long) i1 - i2); 
System.out.printf("%,d%n", difference); 

打印

4,000,000,000 

您可能需要轉換爲long的原因是爲了避免溢出。兩個int值之間最大的區別是最大值和最小值之間,但如果你做

System.out.println(Integer.MAX_VALUE - Integer.MIN_VALUE); 

打印

-1 

由於溢出,而有投你

System.out.println((long) Integer.MAX_VALUE - Integer.MIN_VALUE); 

打印

4294967295 
+0

不需要強制轉換。 – EJP

+0

@EJP在不投出「int-int」的情況下是一個會溢出的「int」。 –

+0

溢出如何?兩個操作數都是整數,所以差異也是int。它需要的只是符號擴展,它會在升級時自動獲取。溢出在哪裏? – EJP

1
public Long difference(Integer i1, Integer i2){ 
    return new Long(i1-i2); 
} 
+1

當'int'或'long'更合適時,我不會使用'Integer'或'Long'。 –

0

顯然這是火箭科學。如果i1和i2是整數或整數:

return i1-i2; 

需要Java 1.5+。但沒有演員或轉換。

很難,即不可能,相信你甚至嘗試過任何東西。