Exercice JAVA modularisation – erreurs fréquentes dans les méthodes

[tab name=’Exercice Java’]

Chacune des méthodes methode1 à methode8 dans le programme ErreursMethodes.java ci-dessous contient une seule erreur syntaxique. Il s’agit d’erreurs liées à l’utilisation des paramètres, des variables ou de la valeur retournée par la méthode. Il n’y pas d’erreurs dans la méthode main, ni dans la méthode methodeSansErreurs. Trouvez et corrigez les erreurs !

Si vous sollicitez l’aide du compilateur pour trouver les erreurs, sachez qu’il aura de la peine avec ce type de programme où il y a beaucoup d’erreurs de structure. Il peut vous montrer la ligne approximative où se trouve une erreur, mais la solution proposée n’est pas toujours correcte, la liste des erreurs n’est pas toujours complète et les erreurs ne sont pas présentées dans le bon ordre. Dans ce genre de situation, utilisez surtout votre bon sens et vos propres connaissances de la syntaxe de Java.

class ErreursMethodes {

    public static void main (String[] args) {
        int i1 = methode1();
        int i2 = methode2();
        int i3 = methode3();
        int i4 = methode4();
        methode5();
        methode6();
        methode7();
        methode8();
    }

    static int methode1 {
        int a = 0;
        System.out.println("Méthode 1");
        return a;
    }

    static int methode2 () {
        int a = 0;
        i1 = 10;
        System.out.println("Méthode 2");
        return a;
    }

    static int methode3 () {
        int a = 0;
        System.out.println("Méthode 3");
    }

    static int methode4 () {
        String a = "0";
        System.out.println("Méthode 4");
        return a;
    }

    static void methode5 () {
        double a = 0;
        System.out.println("Méthode 5");
        return a;
    }

    static methode6 () {
        double a = 0;
        System.out.println("Méthode 6");
        return a;
    }

    static void methode7 () {
        int a = 0;
        double b = 5.5;
        methodeSansErreur(a);
        System.out.println("Méthode 7");
    }

    static void methode8 () {
        int a = 0;
        String b = "5.5";
        methodeSansErreur(a, b);
        System.out.println("Méthode 8");
    }

    static void methodeSansErreur (int a, double b) {
        // Cette méthode ne fait rien du tout
    }
}

[/tab][tab name=’Correction’]

  • methode1: Même s’il n’y a pas d’arguments à envoyer à la méthode, il doit y avoir une liste de paramètres dans l’en-tête. Dans ce cas, il faut ajouter des parenthèses vides.
  • methode2: Il y a une référence à la variable i1 qui n’est pas visible dans la méthode methode2. La portée d’une variable est limitée à son bloc de déclaration, dans le cas de i1 à la méthode main.
  • methode3: La dernière instruction exécutée n’est pas return. Cette instruction est obligatoire pour toutes les méthodes qui retourne une valeur, i.e. qui n’a pas le type void dans l’en-tête.
  • methode4: Le type de la valeur retournée n’est pas le même que le type specifié dans l’en-tête de la méthode.
  • methode5: La méthode essaie de retourner une valeur avec return. Cela n’est pas possible si l’en-tête de la méthode est void.
  • methode6: La méthode n’a pas de type pour la valeur retournée. Si la méthode ne retourne pas de valeur, il faut indiquer void dans l’en-tête.
  • methode7: La méthode sansErreur est appelée avec 1 argument tandis qu’elle en demande 2. Le nombre d’arguments doit toujours correspondre au nombre de paramètres.
  • methode8: La méthode sansErreur est maintenant appelée avec 2 arguments, ce qui est correct, mais le type des arguments ne correspond pas au type des paramètres.
class ErreursMethodesCorrige {

    public static void main (String[] args) {
        int i1 = methode1();
        int i2 = methode2();
        int i3 = methode3();
        int i4 = methode4();
        methode5();
        methode6();
        methode7();
        methode8();
    }

    static int methode1 () {
        int a = 0;
        System.out.println("Méthode 1");
        return a;
    }

    static int methode2 () {
        int a = 0;
        // i1 = 10;
        System.out.println("Méthode 2");
        return a;
    }

    static int methode3 () {
        int a = 0;
        System.out.println("Méthode 3");
        return a;
    }

    static int methode4 () {
        // String a = "0";
        int a = 0;
        System.out.println("Méthode 4");
        return a;
    }

    static void methode5 () {
        double a = 0;
        System.out.println("Méthode 5");
        // return a;
    }

    static double methode6 () {
        double a = 0;
        System.out.println("Méthode 6");
        return a;
    }

    static void methode7 () {
        int a = 0;
        double b = 5.5;
        methodeSansErreur(a, b);
        System.out.println("Méthode 7");
    }

    static void methode8 () {
        int a = 0;
        // String b = "5.5";
        double  b = 5.5;
        methodeSansErreur(a, b);
        System.out.println("Méthode 8");
    }

    static void methodeSansErreur (int a, double b) {
        // Cette méthode ne fait rien du tout
    }
}

[/tab][end_tabset skin= »ginger » ]

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *