2012-11-17 34 views
5

我看http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html如何在Java中對int進行double操作?

我想

double b = Math.sqrt(absoluteNumber); 
    int c = b.intValue(); 

,但我收到此錯誤:

Factorise.java:13: error: double cannot be dereferenced 
int c = b.intValue(); 

幫助嗎?

+10

'int c =(int)b;' – Mysticial

+0

可能重複[如何在Java中將double轉換爲int?](http://stackoverflow.com/questions/2143476/how-to-cast-a-double-to-an-int-in-java) –

回答

14

double不是對象,這是一個基本類型。

只需編寫(int)b即可完成工作。

如果您確實需要一個Double對象,則需要構建一個對象。

2

您可以簡單地將它轉換:

int c = (int)b; 
5

double是「原始類型」,它不具有intValue()方法(實際上它沒有任何方法,因爲它是一個原始)。試試Double包裝類,它有一個intValue()方法。

Double b = Math.sqrt(absoluteNumber); 
int c = b.intValue(); 

或者乾脆用鑄造:

double b = Math.sqrt(absoluteNumber); 
int c = (int) b; 
+2

在這種情況下使用'雙'是矯枉過正,鑄造會更好。 – arshajii

+0

@ A.R.S。真的,我真的指出了錯誤,但是,我提到了原始鑄造現在我的答案,現在歡呼:) – PermGenError

0

嘗試

public static void main(String[] args) { 
     Double b = Math.sqrt(43253); 
     int c = b.intValue(); 

     System.out.println("#### S = " + c); 

    } 

輸出

#### S = 207 
+2

在這種情況下使用'雙'是矯枉過正,鑄造會更好。 – arshajii

+0

這仍然可以被視爲一種選擇 –

1

在類的具體編譯時錯誤是試圖調用上被宣佈爲一個基本類型值的方法的結果。 原始類型不是Object s,因此沒有屬性。因此他們沒有任何方法。

您既可以在原始double值轉換爲原始int值,

double b = Math.sqrt(absoluteNumber) ; 
int a = (int) b ; 

或鑄doubleDouble ---使用Java的功能,稱爲自動裝箱 ---爲了使用Number接口由Double類實現的方法intValue

double b = Math.sqrt(absoluteNumber) ; 
int a = ((Double) b).intValue() ; 

另一種方法是使用Double類的valueOfintValue方法:

double b = Math.sqrt(absoluteNumber) ; 
int a = (Double.valueOf(b)).intValue() ; 
0

這句簡單的話將做的工作。

integer_var_name = (int) double_var_name; 
相關問題