Test d'une exception

nini -  
KX Messages postés 19031 Statut Modérateur -
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

A voir également:

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
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
nini
 
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 19031 Statut Modérateur 3 020
 
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