CodeGym /Cours /JAVA 25 SELF /Valeurs de retour, return

Valeurs de retour, return

JAVA 25 SELF
Niveau 8, Leçon 3
Disponible

1. Introduction

Commençons par une question : pourquoi une méthode devrait-elle renvoyer quelque chose ? Pourquoi ne pas simplement tout faire à l’intérieur de la méthode et afficher le résultat à l’écran ?

En effet, il ne s’agit pas seulement d’exécuter une action, mais souvent d’obtenir un résultat qui servira ailleurs dans le programme. Par exemple :

  • Une méthode calcule la somme de deux nombres et la renvoie afin que nous puissions utiliser le résultat pour d’autres calculs.
  • Une méthode détermine si un nombre est pair et renvoie true ou false, afin que nous puissions prendre une décision.
  • Une méthode renvoie une chaîne de salutation pour l’utilisateur, et nous décidons où l’envoyer — l’afficher à l’écran, l’écrire dans un fichier, l’envoyer sur le réseau.

Si les méthodes se contentaient toujours d’imprimer le résultat, notre programme serait rigide et collé à un seul scénario, et il serait difficile de réutiliser la logique. Une valeur de retour rend les méthodes flexibles et universelles.

Analogie

Imaginez une machine à café. Vous mettez de l’argent, vous appuyez sur un bouton — et vous recevez un café. Si la machine disait simplement à haute voix « Le café est prêt ! » (mais ne donnait pas de café), vous ne seriez pas content. C’est pareil avec les méthodes : parfois on ne veut pas juste entendre « C’est fait ! », on veut obtenir un résultat.

2. Type de valeur de retour : que peut renvoyer une méthode

En Java, lorsque vous déclarez une méthode, vous indiquez le type de la valeur de retour — cela peut être n’importe quel type : int, double, String, boolean, un tableau, voire un objet de votre propre classe. Si la méthode ne renvoie rien, on écrit void.

Syntaxe :

return_value_type methodName(parameters)
{
    // corps de la méthode
}
Signature de la méthode

Exemples :

int sum(int a, int b) 
{
    // renvoie un int
}

String getGreeting(String name) 
{
    // renvoie un String
}

boolean isEven(int number) 
{
    // renvoie un boolean
}

void printHello() 
{
    // ne renvoie rien - exécute simplement une action
}

Important ! Le type de retour est une « promesse » de la méthode : elle doit renvoyer une valeur de ce type. Si vous avez promis de renvoyer un int, mais que vous renvoyez un String, le compilateur protestera et n’autorisera pas la compilation du programme.

3. L’opérateur return : comment renvoyer une valeur depuis une méthode

Pour réellement « donner » le résultat du travail de la méthode vers l’extérieur, on utilise l’opérateur return. Ce mot signifie : « Voici le résultat — et mon travail s’arrête là. »

int sum(int a, int b) 
{
    int result = a + b;
    return result; // on renvoie le résultat
}
Renvoyer une valeur avec return

On peut faire plus court :

int sum(int a, int b) 
{
    return a + b;
}

Quand la méthode atteint la ligne return, elle termine son exécution, renvoie la valeur indiquée et la transmet à l’endroit d’où elle a été appelée.

Important : le type de la valeur après return doit correspondre au type déclaré de la méthode.

4. Utilisation de la valeur de retour : qu’en faire ?

Quand une méthode renvoie une valeur, vous pouvez :

  • La stocker dans une variable.
  • L’utiliser directement dans une expression.
  • La passer à une autre méthode.
int result = sum(5, 7); // on le stocke dans une variable
System.out.println(result); // on affiche le résultat

System.out.println(sum(10, 20)); // on affiche directement le résultat

if (isEven(42)) 
{
    System.out.println("Le nombre est pair!");
}

Exemple : une méthode qui renvoie une chaîne

String getGreeting(String name) 
{
    return "Bonjour, " + name + "!";
}

// Utilisation :
String greeting = getGreeting("Alisa");
System.out.println(greeting); // Bonjour, Alisa !

5. Pratique : exemples de méthodes avec valeur de retour

Méthode qui renvoie le maximum de deux nombres

int max(int a, int b) 
{
    if (a > b) 
    {
        return a;
    } 
    else 
    {
        return b;
    }
}

On peut faire encore plus court si vous maîtrisez déjà l’opérateur ternaire :

int max(int a, int b) 
{
    return (a > b) ? a : b;
}

Utilisation :

int maximum = max(10, 25);
System.out.println("Maximum: " + maximum); // Maximum: 25

Méthode qui renvoie true si le nombre est pair

boolean isEven(int number) 
{
    return number % 2 == 0;
}

Utilisation :

if (isEven(18)) 
{
    System.out.println("Le nombre est pair!");
} 
else 
{
    System.out.println("Le nombre est impair!");
}

Méthode qui renvoie la somme des éléments d’un tableau

int sumArray(int[] arr) 
{
    int sum = 0;
    for (int i = 0; i < arr.length; i++) 
    {
        sum += arr[i];
    }
    return sum;
}

Utilisation :

int[] grades = {5, 4, 3, 5, 4};
int total = sumArray(grades);
System.out.println("Somme des notes: " + total);

6. Ce qui se passe lors de l’appel d’une méthode avec return

Quand vous appelez une méthode qui renvoie une valeur, l’exécution du programme « entre » dans la méthode, exécute son code, atteint return, renvoie la valeur — et la substitue à l’endroit de l’appel.

Schématiquement :

int a = 2;
int b = 3;
int c = sum(a, b); // ici sum(2, 3) est appelé, 5 est renvoyé, c prend la valeur 5

Organigramme

        graph TD
        A["main"] --> B["sum(a, b)"]
        B --> C[calculs]
        C --> D[return résultat]
        D -->|le résultat est renvoyé| A
    

7. Nuances utiles

return met fin à l’exécution de la méthode

Dès que return est rencontré dans une méthode, l’exécution de la méthode s’arrête immédiatement. Tout ce qui suit ne s’exécute pas.

int test()
{
    return 42;
    System.out.println("Ceci ne sera pas imprimé"); // unreachable
}

return dans une méthode de type void

Dans une méthode void (qui ne renvoie rien), on peut utiliser return sans valeur — simplement pour terminer l’exécution de la méthode de manière anticipée, par exemple sous une condition.

void printPositive(int number)
{
    if (number <= 0) 
    {
        System.out.println("Le nombre n'est pas positif!");
        return; // on sort simplement de la méthode
    }
    System.out.println("Nombre: " + number);
}

8. Erreurs fréquentes avec return

Erreur n° 1 : toutes les branches ne renvoient pas une valeur

int getSign(int number)
{
    if (number > 0) 
    {
        return 1;
    }
    // Et si number <= 0 ? Pas de return !
}
// Erreur: toutes les branches du code ne renvoient pas une valeur

Comment corriger : prévoyez toujours un return sur tous les chemins d’exécution.

int getSign(int number)
{
    if (number > 0) 
    {
        return 1;
    } 
    else if (number < 0) 
    {
        return -1;
    } 
    else 
    {
        return 0;
    }
}

Erreur n° 2 : type de valeur de retour non conforme

int getNumber()
{
    return "42"; // Erreur ! On attendait un int, pas un String
}

Erreur n° 3 : return après un return

int test()
{
    return 5;
    System.out.println("Ceci ne s'exécutera pas"); // unreachable statement
}

Erreur n° 4 : return avec une expression dans une méthode void

void printSomething()
{
    return 42; // Erreur ! Une méthode void ne peut pas renvoyer de valeur
}

Erreur n° 5 : ignorer la valeur de retour

sum(10, 20); // et c'est tout ? Résultat perdu !

Si vous n’utilisez pas la valeur de retour, elle est simplement perdue. N’oubliez pas de la stocker ou de la transmettre plus loin dans le code !

Erreur n° 6 : penser que return affiche quelque chose

int result = sum(2, 3);
// return n'affiche rien !
// Il faut l'afficher explicitement :
System.out.println(result);
1
Mission
JAVA 25 SELF, niveau 8, leçon 3
Bloqué
Assistant intelligent pour salutations personnalisées 🤖
Assistant intelligent pour salutations personnalisées 🤖
1
Mission
JAVA 25 SELF, niveau 8, leçon 3
Bloqué
Détecteur de parité pour un quiz éducatif ❓
Détecteur de parité pour un quiz éducatif ❓
1
Mission
JAVA 25 SELF, niveau 8, leçon 3
Bloqué
Sélection du gagnant par points 🏆
Sélection du gagnant par points 🏆
1
Mission
JAVA 25 SELF, niveau 8, leçon 3
Bloqué
Calcul du total des points pour tous les tests d'un étudiant 📚
Calcul du total des points pour tous les tests d'un étudiant 📚
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION