2012-12-30 20 views
7

Ten kod, który napisałem, aby przekonwertować double na int, otrzymuję wyjątek.Double nie konwertuje na int

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Cannot cast from Double to int 

To jest mój kod

Double d = 10.9;  
int i = (int)(d); 

Odpowiedz

8

Double jest wrapper klasa na górze prymitywnego double. Można go obsadzić w trybie double, ale nie można go przesłać bezpośrednio do int.

Jeśli używasz double zamiast Double będzie skompilować:

double d = 10.9;  
int i = (int)(d); 

Można również dodać obsady do double w środku, tak:

int i = (int)((double)d); 
2

Ten

Double d = 10.9; 

jest twój błąd. Używasz klas opakowujących zamiast typów danych. Użyj

double d = 10.9; 
3

To dlatego, że nie można mieszać unboxing (konwersja Double do podwójnego primitive) i odlewu. spróbować

int i = (int)(d.doubleValue()); 
+0

Typo 'convertig'. 'n' brakuje. –

0

Nie można rzucić opakowanie jak Double do typu pierwotnego jak int bezpośrednio.

Można spróbować -

int i = (int)((double)d);

uzyskać więcej czeku poniższy link - http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html

+0

'Nie możesz rzutować opakowania jak Double do typu pierwotnego, jak int bezpośrednio. Nie zawsze' (double) new Integer (5); 'będzie działać. – BaSsGaz

Powiązane problemy