2012-12-30 19 views
7

Dieser Code, den ich geschrieben habe, um double in int zu konvertieren, bekomme eine Ausnahme.Double konvertiert nicht zu einem int

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

Dies ist mein Code

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

Antwort

8

Double eine auf der Oberseite der primitiven doubleWrapper Klasse ist. Es kann in double umgewandelt werden, es kann jedoch nicht direkt in int umgewandelt werden.

Wenn Sie double statt Double, wird es kompilieren:

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

Sie können auch eine Besetzung zu double in der Mitte, wie hinzufügen:

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

Diese

Double d = 10.9; 

Ihr Fehler ist. Sie verwenden Wrapperklassen anstelle von Datentypen. Verwenden Sie

double d = 10.9; 
3

das ist, weil man kann Unboxing mischen (das Umwandeln Ihrer Double zu einem Doppel primitive) und Gießen. versuchen

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

Typo 'convertig'. 'n' fehlt. –

0

Sie können nicht Wrapper gegossen wie Double zum primitiven Typ wie int direkt.

Sie können versuchen, diese -

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

Weitere Check folgenden Link - http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html

+0

'Sie können Wrapper wie Double nicht direkt in einen primitiven Typ wie int konvertieren. Nicht immer' (double) new Integer (5); 'würde funktionieren. – BaSsGaz

Verwandte Themen