Chargement...

Valeurs de retour en Java

Écrivez une méthode nommée twice qui prend un int nommé n et renvoie le double de ce nombre. L'en-tête commence par int, pas void : static int twice(int n). Entre les accolades écrivez return n * 2;. Dans main, affichez le résultat de l'appel : System.out.println(twice(7));. L'écran doit montrer une ligne : 14. twice elle-même n'appelle pas println. Elle ne fait que rendre 14. main imprime ce nombre. Ce rendu est ce que cette page enseigne.

Rendez un nombre à main

Sur la page des paramètres, greet et show imprimaient à l'intérieur du corps de la méthode. L'appel envoyait une valeur, et la méthode écrivait à l'écran. Ici la méthode reçoit encore une valeur, mais elle en envoie aussi une vers l'extérieur. Le mot return marque cette valeur sortante. main peut la stocker ou l'afficher.
Créez un petit fichier de programme nommé Box.java. La public class de la première ligne doit correspondre au nom du fichier : public class Box. Ne laissez pas un ancien nom de classe Tip ou Chime dans ce fichier ; le compilateur attend que le nom de classe et le nom de fichier concordent.
En dehors de main, toujours à l'intérieur des accolades de la classe, écrivez :
static int twice(int n) {
return n * 2;
}
L'en-tête ne dit plus void. Il dit int parce que la valeur qui revient est un int. Entre les parenthèses, int n est encore un paramètre — même idée que la page précédente. Le corps a une seule instruction : return n * 2;. Elle multiplie n par 2 et renvoie le produit à celui qui a appelé twice. Il n'y a pas de System.out.println à l'intérieur de twice sur cette page. Enregistrez le fichier avant de compiler.

Box.java avec twice

Voici le petit programme complet. twice calcule. main affiche.

twice renvoie n fois 2

java
public class Box {
    public static void main(String[] args) {
        System.out.println(twice(7));
    }

    static int twice(int n) {
        return n * 2;
    }
}

Depuis le dossier qui contient Box.java, lancez javac Box.java. Quand parenthèses, accolades et points-virgules concordent, javac n'écrit aucune ligne de son côté. Puis lancez java Box — pas java Box.java. Laissez le .java hors de la seconde commande. Les deux mêmes commandes fonctionnent sur Windows et sur macOS ; cette page n'a pas besoin d'une orthographe de shell différente pour l'un ou l'autre système. Le programme doit afficher une ligne et s'arrêter : 14. Il ne doit pas attendre que vous tapiez. Si le terminal attend une saisie clavier, un appel nextLine d'un ancien exercice est encore dans le fichier. Supprimez cet appel et gardez System.out.println(twice(7)); plus la méthode twice ci-dessus. Une mauvaise ligne à l'écran ne signifie pas qu'il faille réinstaller le JDK.

Parcourez une exécution une fois dans l'ordre. Java démarre à main. L'appel twice(7) envoie 7 dans n. À l'intérieur de twice, return n * 2; calcule 14 et rend ce 14 à main. Puis println écrit 14. twice n'a jamais écrit à l'écran toute seule. Si vous changez l'appel en twice(3), l'écran doit montrer 6. Le corps de la méthode reste le même ; seul l'argument change, et le produit renvoyé change avec lui. Si l'écran montre 7 au lieu de 14, vous avez imprimé n à l'intérieur de twice ou imprimé l'argument dans main sans appeler twice — placez le doublement sur la ligne return et imprimez le résultat de l'appel.
Vous pouvez aussi garder la valeur renvoyée dans un nom à l'intérieur de main avant d'imprimer :
int result = twice(7);
System.out.println(result);
Cela montre encore une ligne : 14. L'appel se termine d'abord et remplit result. Puis println écrit result. Les deux formes — imprimer l'appel directement, ou stocker puis imprimer — utilisent le même return de twice.

Affichez la valeur que main a reçue

Changez seulement le nombre dans l'appel si vous voulez une autre ligne à l'écran. Laissez return n * 2; tel quel. Compilez et lancez à nouveau après chaque changement : javac Box.java, puis java Box. twice(0) doit imprimer 0. twice(10) doit imprimer 20. Chaque fois main imprime ce que twice a rendu.
Si twice dit encore void dans l'en-tête alors que le corps a return n * 2;, javac écrit une erreur — void signifie que rien ne revient, donc un return avec une valeur ne convient pas. Si l'en-tête dit int mais que le corps n'a pas de return, javac écrit aussi une erreur — une méthode int doit renvoyer un int sur chaque chemin de cette forme débutante. Si le corps imprime et ne renvoie jamais, vous êtes revenus à l'idée de la page Tip ; cette page veut le nombre dans les mains de main.

void face à un retour typé

Lisez les deux formes côte à côte. Une méthode void exécute son corps et se termine. Une méthode avec un retour typé doit rendre une valeur avec return. main traite l'appel comme cette valeur quand le type de retour n'est pas void.

📊 corps void face à return

Forme Ce que fait la méthode Ce que main fait souvent
void show(int n) imprime à l'intérieur du corps appelle show(9); et peut n'imprimer rien d'autre
int twice(int n) return n * 2; imprime ou stocke twice(7)

Une confusion courante est de mettre System.out.println(n * 2); à l'intérieur de twice et de laisser l'en-tête en int sans return. Alors javac se plaint, ou vous remettez l'en-tête en void et vous n'avez plus de valeur que main puisse imprimer depuis l'appel. Une autre confusion est d'écrire return; sans valeur alors que l'en-tête dit int. Gardez return n * 2; pour que le type de l'expression renvoyée corresponde à int. Écrire System.out.println("twice"); dans main imprime le mot twice ; cela n'appelle pas la méthode. Gardez println(twice(7)) quand vous voulez 14 à l'écran.

Une démo greet restante de Tip qui n'imprime que hi lena à l'intérieur de la méthode peut rester dans le même fichier et brouiller l'écran. Videz main jusqu'au println qui utilise twice, et gardez une méthode qui renvoie. Ne nichez pas twice à l'intérieur des accolades de main. Les méthodes se placent à l'intérieur de la classe, à côté de main. Fermez les accolades de twice avant la fin de la classe.

Avant overloading

Vous pouvez écrire static int twice(int n), renvoyer une valeur calculée, et afficher cette valeur depuis main. L'écran montre le nombre que main a reçu, pas une ligne que la méthode a imprimée toute seule. void est le mauvais en-tête quand vous avez besoin d'une valeur en retour. La page suivante est overloading, où plus d'une méthode peuvent partager un nom quand leurs listes de paramètres diffèrent.

🧠 Testez Vos Connaissances

Prêt à Commencer

Testez Vos Connaissances

Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet

❓
6
Questions
🎯
70%
Pour Réussir
♾️
∞
Temps
🔄
∞
Tentatives

📝 Instructions

  • Lisez chaque question attentivement
  • Sélectionnez la meilleure réponse pour chaque question
  • Vous pouvez refaire le quiz autant de fois que vous le souhaitez
  • Votre progression sera affichée en haut