Probleme java: "return"
Fermé
Aaymeric
Messages postés
78
Date d'inscription
jeudi 29 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2018
-
29 sept. 2011 à 21:36
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 30 sept. 2011 à 06:29
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 30 sept. 2011 à 06:29
A voir également:
- Probleme java: "return"
- Waptrick java football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel football - Télécharger - Jeux vidéo
- Jeux java itel 5360 ✓ - Forum Mobile
- Java jre - Télécharger - Langages
4 réponses
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
29 sept. 2011 à 21:56
29 sept. 2011 à 21:56
Ici il y a deux manières de voir le problème, soit tu fais l'affichage dans la méthode et tu te retrouves dans le cas où tu n'as pas besoin de renvoyer de valeur. Il te suffit donc de mettre le type void comme type de retour et d'enlever le return.
Une autre façon de voir le problème, ce qui correspond d'ailleurs à ton main, est qu'au lieu d'afficher le résultat dans la méthode, tu renvoie le String à afficher :
Remarque qui n'a rien à voir avec ton problème : tu peux rajouter le mot clé final à ton objet scanner, mais puisque tu débutes tu ne vois peut-être pas l'intérêt ;-)
public static void resultat(double moyenne) { if(moyenne < 12) System.out.println ("L'étudiant est refusé"); else if(12 <= moyenne && moyenne < 14) System.out.println ("L'étudiant a satisfait"); else if(14 <= moyenne && moyenne < 16) System.out.println("L'étudiant a mérité une distinction"); else if(moyenne > 16) System.out.println("L'étudiant a mérité une grande distinction"); }
Une autre façon de voir le problème, ce qui correspond d'ailleurs à ton main, est qu'au lieu d'afficher le résultat dans la méthode, tu renvoie le String à afficher :
public static String resultat(double moyenne) { if(moyenne < 12) return "L'étudiant est refusé"; else if(12 <= moyenne && moyenne < 14) return "L'étudiant a satisfait"; else if(14 <= moyenne && moyenne < 16) return "L'étudiant a mérité une distinction"; else if(moyenne > 16) return "L'étudiant a mérité une grande distinction"; }
Remarque qui n'a rien à voir avec ton problème : tu peux rajouter le mot clé final à ton objet scanner, mais puisque tu débutes tu ne vois peut-être pas l'intérêt ;-)
Aaymeric
Messages postés
78
Date d'inscription
jeudi 29 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2018
29 sept. 2011 à 22:05
29 sept. 2011 à 22:05
Je comprend pas ce que tu essayes de m'expliquer :s
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
29 sept. 2011 à 22:11
29 sept. 2011 à 22:11
Ce que tu veux faire c'est l'affichage du resultat. Donc au choix :
1) tu fais tous les affichage dans la méthode (avec des System.out.println un peu partout) et dans ce cas il n'y a aucun résultat à renvoyer, et le System.out.println(resultatAAfficher) n'a aucun sens vu que l'affichage est déjà fait par la méthode
2) tu renvoie en résultat de la méthode le commentaire sur la note (un String) qui sera affiché par ton main, et dans ce cas il faut enlever tous les System.out.println de la méthode vu que c'est le main qui s'occupera de l'affichage.
1) tu fais tous les affichage dans la méthode (avec des System.out.println un peu partout) et dans ce cas il n'y a aucun résultat à renvoyer, et le System.out.println(resultatAAfficher) n'a aucun sens vu que l'affichage est déjà fait par la méthode
2) tu renvoie en résultat de la méthode le commentaire sur la note (un String) qui sera affiché par ton main, et dans ce cas il faut enlever tous les System.out.println de la méthode vu que c'est le main qui s'occupera de l'affichage.
Aaymeric
Messages postés
78
Date d'inscription
jeudi 29 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2018
29 sept. 2011 à 22:10
29 sept. 2011 à 22:10
Par contre, ce que je ne comprend pas, c'est qu'a la fin j'avais mis
return "mon texte"; et ca ne fonctionnait pas or maintenant oui.
Maintenant je ne comprend pas très bien le return, ou plutot, comment l'utiliser. Car la je me dis qu'il sert a renvoyer la lecture du code a un endroit du code et maintenant je comprend aussi qu'il permet d'afficher une phrase comme System.out..... :s
return "mon texte"; et ca ne fonctionnait pas or maintenant oui.
Maintenant je ne comprend pas très bien le return, ou plutot, comment l'utiliser. Car la je me dis qu'il sert a renvoyer la lecture du code a un endroit du code et maintenant je comprend aussi qu'il permet d'afficher une phrase comme System.out..... :s
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
29 sept. 2011 à 22:19
29 sept. 2011 à 22:19
De manière général, le return permet de déterminer quelle valeur renvoie ta méthode avec les paramètres que tu lui as passé.
Quand tu fais String resultatAAfficher = resultat(moyenneEtudiant); par exemple
La valeur du resultatAAfficher correspondra au return dans la méthode resultat.
C'est pour ça que vu qu'après tu fais System.out.println(resultatAAfficher), il est inutile de faire des affichages à l'intérieur de la méthode (on est dans le cas 2). Alors que si au contraire tu considère que c'est la méthode qui doit faire l'affichage (cas 1), tu n'as plus besoin du resultatAAfficher, donc tu n'as plus besoin du return.
Quand tu fais String resultatAAfficher = resultat(moyenneEtudiant); par exemple
La valeur du resultatAAfficher correspondra au return dans la méthode resultat.
C'est pour ça que vu qu'après tu fais System.out.println(resultatAAfficher), il est inutile de faire des affichages à l'intérieur de la méthode (on est dans le cas 2). Alors que si au contraire tu considère que c'est la méthode qui doit faire l'affichage (cas 1), tu n'as plus besoin du resultatAAfficher, donc tu n'as plus besoin du return.
Aaymeric
Messages postés
78
Date d'inscription
jeudi 29 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2018
29 sept. 2011 à 22:16
29 sept. 2011 à 22:16
Et si je veux renvoyer au scanner pour directement réessayer mon programme, je fais comment ?
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
29 sept. 2011 à 22:21
29 sept. 2011 à 22:21
Renvoyer quoi au scanner ? Tu veux dire boucler pour recommencer le programme ?
Tu peux encadrer le code de ton main par une boucle while par exemple :
Tu peux encadrer le code de ton main par une boucle while par exemple :
public static void main(String...args) { while(true) { System.out.print("Entrez la moyenne de l'étudiant sur 100 : "); double moyenneEtudiant = scanner.nextDouble(); // cas 1 : resultat(moyenneEtudiant); // cas 2 : resultatAAfficher = resultat(moyenneEtudiant); System.out.println(resultatAAfficher); } }
Aaymeric
Messages postés
78
Date d'inscription
jeudi 29 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2018
29 sept. 2011 à 22:28
29 sept. 2011 à 22:28
Pourquoi le While(true) ? et les "()" sont elles importants ? Car elles paraissent en noir dans mon éditeur jgrasp
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
29 sept. 2011 à 22:34
29 sept. 2011 à 22:34
Je ne connais pas jgrasp alors je ne sais pas ce que signifie pour lui qu'elles soient en noir.
Le while(true) c'est au cas où tu veuilles recommencer autant de fois que tu veux la saisie sans avoir à redémarrer le programme (je crois que c'est ce que tu voulais)
Les parenthèses font parti de la syntaxe, elles permettent, comme les accolades ou les crochets, de différencier les différents blocs et savoir et connaître la portée des instructions.
Le while(true) c'est au cas où tu veuilles recommencer autant de fois que tu veux la saisie sans avoir à redémarrer le programme (je crois que c'est ce que tu voulais)
Les parenthèses font parti de la syntaxe, elles permettent, comme les accolades ou les crochets, de différencier les différents blocs et savoir et connaître la portée des instructions.
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
29 sept. 2011 à 22:38
29 sept. 2011 à 22:38
Remarque : il est possible que jgrasp mettent en noir les parenthèses, les accolades et les crochets uniquement pour que tu puisses repérer où s'ouvre et se ferme le bloc.
Par exemple tu fermes une parenthèse, il t'indique en noir la parenthèse que tu viens de fermer, et la parenthèse ouvrante correspondante.
Par exemple tu fermes une parenthèse, il t'indique en noir la parenthèse que tu viens de fermer, et la parenthèse ouvrante correspondante.
Aaymeric
Messages postés
78
Date d'inscription
jeudi 29 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2018
29 sept. 2011 à 22:41
29 sept. 2011 à 22:41
Et comment je fais le "égale ou plus grand que" en symbole. Moi j'aurai mis: else if(moyenne => 16) mais le java n'accepte pas