Probleme return statement
Résolu
apolonys
-
apolonys -
apolonys -
Bonjour,
j'ai un soucis avec le return , notion que je comprends pas tout a fait bien. Donc j'ai un prog qui valide une date selon le mois, jour et année mais j'ai une erreur de : missing return statement. j'ai retourné le code dans tous les sens mais rien ...
1 import java.util.Scanner ;
2 public class ValidationDate {
3
4 /**
5 * Calcul année bissextile en fonction de l'année lue.
6 * @param année l'année donnée.
7 * @return année bissextile ou pas (vrai ou faux).
8 */
9 public static boolean annéeBissextile (int année){
10 boolean bissextile = (((année % 400)==0) || ((année % 4) == 0 &&
11 !((année % 100)== 0)));
12 return bissextile;
13 }
14
15 /**
16 * Calcul le nombre de jour du mois en fonction du mois lu
17 * @param mois le mois donné.
18 * @return le nombre de jour du mois donné.
19 */
20 public static int nombreJour (int mois, int année){
21 int nombreJourMois;
22 boolean bissextile = annéeBissextile(année);
23 if ((mois==1) || (mois==3) || (mois==5) || (mois==7) || (mois==8) ||
24 (mois==10) || (mois==12)){
25 nombreJourMois = 31;
26 return nombreJourMois;
27 }else if ((mois==4) || (mois==6) || (mois==9) || (mois==11)){
28 nombreJourMois = 30;
29 return nombreJourMois;
30 }else if (mois==2){
31 if (bissextile){
32 nombreJourMois = 29;
33 return nombreJourMois;
34 }else {
35 nombreJourMois = 28;
36 return nombreJourMois;
37 }
38 }
39 }
40
41 /**
42 * Valider une date en fonction du jour lu, mois et année.
43 * @param jour jour donné.
44 */
45 public static void main ( String[] args){
46 Scanner clavier = new Scanner ( System.in ) ;
47 int jour, mois, année, nombreJour, nombreJourMois;
48 System.out.println("Entrer un jour :");
49 jour = clavier.nextInt();
50 System.out.println("Entrer un mois :");
51 mois = clavier.nextInt();
52 System.out.println("Entrer une année :");
53 année = clavier.nextInt();
54 nombreJourMois = nombreJour(mois,année);
55 if (jour <= nombreJourMois){
56 System.out.println("Jour valide");
57 } else {
58 System.out.println("Jour invalide");
59 }
60 }
61 }
merci d'avance
j'ai un soucis avec le return , notion que je comprends pas tout a fait bien. Donc j'ai un prog qui valide une date selon le mois, jour et année mais j'ai une erreur de : missing return statement. j'ai retourné le code dans tous les sens mais rien ...
1 import java.util.Scanner ;
2 public class ValidationDate {
3
4 /**
5 * Calcul année bissextile en fonction de l'année lue.
6 * @param année l'année donnée.
7 * @return année bissextile ou pas (vrai ou faux).
8 */
9 public static boolean annéeBissextile (int année){
10 boolean bissextile = (((année % 400)==0) || ((année % 4) == 0 &&
11 !((année % 100)== 0)));
12 return bissextile;
13 }
14
15 /**
16 * Calcul le nombre de jour du mois en fonction du mois lu
17 * @param mois le mois donné.
18 * @return le nombre de jour du mois donné.
19 */
20 public static int nombreJour (int mois, int année){
21 int nombreJourMois;
22 boolean bissextile = annéeBissextile(année);
23 if ((mois==1) || (mois==3) || (mois==5) || (mois==7) || (mois==8) ||
24 (mois==10) || (mois==12)){
25 nombreJourMois = 31;
26 return nombreJourMois;
27 }else if ((mois==4) || (mois==6) || (mois==9) || (mois==11)){
28 nombreJourMois = 30;
29 return nombreJourMois;
30 }else if (mois==2){
31 if (bissextile){
32 nombreJourMois = 29;
33 return nombreJourMois;
34 }else {
35 nombreJourMois = 28;
36 return nombreJourMois;
37 }
38 }
39 }
40
41 /**
42 * Valider une date en fonction du jour lu, mois et année.
43 * @param jour jour donné.
44 */
45 public static void main ( String[] args){
46 Scanner clavier = new Scanner ( System.in ) ;
47 int jour, mois, année, nombreJour, nombreJourMois;
48 System.out.println("Entrer un jour :");
49 jour = clavier.nextInt();
50 System.out.println("Entrer un mois :");
51 mois = clavier.nextInt();
52 System.out.println("Entrer une année :");
53 année = clavier.nextInt();
54 nombreJourMois = nombreJour(mois,année);
55 if (jour <= nombreJourMois){
56 System.out.println("Jour valide");
57 } else {
58 System.out.println("Jour invalide");
59 }
60 }
61 }
merci d'avance
A voir également:
- Probleme return statement
- Zuma return - Télécharger - Jeux vidéo
- Touche return clavier - Guide
- Return to castle wolfenstein patch fr ✓ - Forum Jeux vidéo
- Problème python return ✓ - Forum Python
- Télécharger return to castle wolfenstein pc gratuit complet - Forum Jeux PC
1 réponse
Dans ta méthode nombreJour tu fais une succession de if sur la valeur de mois, mais il faut que l'énumération des cas soit exhaustif.
Par exemple si mois==13, il n'y a pas de return associé, alors qu'il faudrait en avoir un.
Tu peux par exemple associé la valeur 0 pour dire qu'il n'y a pas de jour au mois 13.
Remarque au passage, tu peux directement faire return 0; sans avoir à déclarer une variable nombreJourMois=0 et faire return nombreJourMois.
Par exemple si mois==13, il n'y a pas de return associé, alors qu'il faudrait en avoir un.
Tu peux par exemple associé la valeur 0 pour dire qu'il n'y a pas de jour au mois 13.
Remarque au passage, tu peux directement faire return 0; sans avoir à déclarer une variable nombreJourMois=0 et faire return nombreJourMois.
38 } else return 0; 39 }
donc si je veux etre plus complet je pourrai faire :
} else {
if (( 1 <= mois) && (mois <=12)) {
nombreJourMois = 0;
return nombreJourMois;
}
}
En fait cette condition ne sert à rien, car tous les mois entre 1 et 12 sont déjà traités avant.
Ici ce qui t'intéresse c'est vraiment les autres cas, donc un else suffit, comme je l'ai fait plus haut.
Toutes ces instructions ne servent à rien, ça ne résout pas ton problème.
Ce qu'il faut je l'ai déjà mis plus haut dans ma première réponse :
if ((mois <1) || (mois >12))
nombreJourMois = 0;
return nombreJourMois;
mais avec ta solution ca reviendra au meme mais en plus courte c'est bien ca ?