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.
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.
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.
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>();
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 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.