Salut,
On peut facilement obtenir le nombre de jour du mois pour une année donnée comme ça month.length(Year.isLead(year), avec year une variable de type int qui contient l'année (par exemple 2017), et month une variable de type Month qui contient le mois.
Pour passer de String à Month, le plus simple est d'utiliser un switch (on peut le faire directement à partir d'une String si celle-ci contient le nom du mois en anglais, par Month.valueOf( moisEnAnglais.toUpperCase() ). On peut également faire une enum sous le même principe que Month (qui est une enum) :
1 2 3 4 5 6 7 8 9
| public enum MonthFrench {
JANVIER,
FEVRIER,
MARS,
;
public Month toMonth() {
return Month.of(ordinal()+1);
}
} |
je n'ai mis que les mois de janvier à mars, mais il suffit que tu complètes la liste et ça fonctionnera avec :
Month month = MonthFrench.valueOf( moisEnFrancais.toUpperCase() );
Si le but de l'exercice est de ne pas utiliser des classes toutes faites de Java, il te suffit de faire un switch :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| final int nombredejours;
switch(mois) {
case "janvier":
case "mars":
case "mai":
case "juillet":
case "août":
case "octobre":
case "décembre":
nombredejour=31;
break;
case "février":
if ( isLeap(year) ) {
nombreDeJour=29;
}
else {
nombreDeJour=29;
}
break;
default:
nombredejours=30;
} |
Ou bien tu mets les mois dans une liste, ordonnée, et tu utilises le rang du mois :
1 2 3 4 5 6 7
| int rang = liste.indexOf( mois ); // attention index de 0 à 11 inclus
if ( rang==1 ) { // février
}
else if ( (rang<7 && rang%2==0) || (rang>=7 && rang%2==1) ) { // mois de 31 jours
}
else { // mois de 30 jours
} |
Partager