54 votes

ClassCastException, convertir Integer en Double

ArrayList marks = new ArrayList();
Double sum = 0.0;
sum = ((Double)marks.get(i));

Chaque fois que j'essaie d'exécuter mon programme, j'obtiens une ClassCastException qui indique : java.lang.Integer cannot be cast to java.lang.Double.

3voto

BOb B. Points 31

Changer un nombre entier en un double

int abc=12; //setting up integer "abc"

System.out.println((double)abc); 

Le code produira l'entier "abc" comme un double, ce qui signifie qu'il s'affichera comme "12.0". Remarquez la présence d'une décimale, indiquant que ce chiffre de précision a été stocké.

Idem pour le double si vous voulez le changer à nouveau,

double number=13.94;

System.out.println((int)number); 

Ce code va imprimer sur une ligne, "nombre" en tant qu'entier. La sortie sera "13". Remarquez que la valeur n'a pas été arrondie, la donnée a en fait été omise.

3voto

total_chaos Points 21
sum = Double.parseDouble(""+marks.get(i));

1voto

vimal chaudhary Points 11
Integer x=10;
Double y = x.doubleValue();

0voto

user2333258 Points 116

Cela signifie que votre ArrayList contient des entiers dans certains éléments. Le casting devrait fonctionner à moins qu'il y ait un entier dans l'un de vos éléments.

Une façon de s'assurer que votre tableau ne contient pas d'entiers est de le déclarer comme un tableau de Doubles.

    ArrayList<Double> marks = new ArrayList<Double>();

0voto

palmaone Points 138

Je pense que le problème principal est que vous faites un casting en utilisant une classe wrapper, il semble que ce soit des types incompatibles.

Mais il y a un autre problème : "i" est un int, donc vous effectuez un casting du résultat final et vous devriez également effectuer un cast de i. Essayez également d'utiliser le mot clé "double" pour effectuer le casting et non la classe enveloppe "Double".

Vous pouvez vérifier ici :

J'espère que cela vous aidera. J'ai trouvé le fil de discussion utile, mais je pense que cela permet de le clarifier davantage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X