Test d'une exception

Fermé
nini - 14 avril 2012 à 22:31
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 14 avril 2012 à 23:08
Bonjour,
j'ai mon programme qui n'arrive pas a s'exécuter bien alors que je n ai pas remarqué aucune erreur

package exceptioncatch;
public class ExceptionCatch {

static int moyenne (String[] liste) {
int somme=0, entier, nbNotes=0, i;
for (i=0; i<liste.length; i++)
{
try {
entier=Integer.parseInt(liste[i]);
// conversion cha^?ne en valeur enti'ere
somme += entier; nbNotes++;
}
catch (NumberFormatException e) {
System.out.println("note: "+(i+1)+" invalide");
}
}
return (somme/nbNotes);
}
public static void main (String[]argv) {
int [4] montableau = {"ha",2,4, 3.5};
System.out.println("moyenne "+moyenne(montableau));
}
}
de que je l'exécute voici se qu'il m'affiche
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - not a statement
at exceptioncatch.ExceptionCatch.main(ExceptionCatch.java:29)
Java Result: 1

s'il vous plais aider mois
merci



1 réponse

KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 004
14 avril 2012 à 22:50
Tu n'as pas remarqué d'erreurs ? Pourtant ça pique !

Ici il ne s'agit pas d'une erreur d'exécution mais d'une erreur de compilation, sur ton main, il faut savoir distinguer ces deux types d'erreurs, c'est très différent.

La déclaration d'un tableau se fait avec les crochets mais sans avoir besoin de lui spécifier la taille puisqu'il ne s'agit que d'une référence et qu'elle peut références des tableaux de tailles différents :

int[] montableau

Ensuite, tu as mis "ha" qui est un String, et 3.5 qui est un double, alors que tu as déclaré un int[], donc forcément ça ne peut pas fonctionner ! Si tu veux mettre des types différents dans un même tableau, utilises un tableau d'Object

Object[] montableau = {"ha", 2, 4, 3.5};

Cependant tu utilises ensuite la méthode moyenne qui doit avoir un String[] en paramètre, il faut donc que montableau soit plutôt un String[]

String[] montableau = {"ha", "2", "4", "3.5"};
0
merci KX ca marcher il ma afficher note: 1 invalide
note: 4 invalide
moyenne 3
pourquoi lorsque j'ai mis ceci ça n'a pas marcher
public static void main (String[]argv) {
System.out.println("moyenne "+moyenne(argv));
}
0
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 004
14 avril 2012 à 23:08
Probablement parce que tu n'as pas passé de paramètres à ton programme Java.
Si tu es en ligne de commande c'est facile il faut faire : java ExceptionCatch ha 2 4 3.5
Si tu utilises un IDE il faut regarder dans les options d'exécutions pour faire l'équivalent
0