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

1 réponse

  1. 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
    1. 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
    2. 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