Existe-t-il un meilleur moyen de compacter cette méthode, c’est-à-dire de réduire la complexité cyclomatique en évitant les cas de commutation?
String monthString;
switch (month) {
case 1: monthString = "January"; break;
case 2: monthString = "February"; break;
case 3: monthString = "March"; break;
case 4: monthString = "April"; break;
case 5: monthString = "May"; break;
case 6: monthString = "June"; break;
case 7: monthString = "July"; break;
case 8: monthString = "August"; break;
case 9: monthString = "September"; break;
case 10: monthString = "October"; break;
case 11: monthString = "November"; break;
case 12: monthString = "December"; break;
default: monthString = "Invalid month"; break;
}
System.out.println(monthString);
Essayer:
import Java.text.DateFormatSymbols;
monthString = new DateFormatSymbols().getMonths()[month-1];
Vous pouvez également utiliser SimpleDateFormat:
import Java.text.SimpleDateFormat;
System.out.println(new SimpleDateFormat("MMMM").format(date));
(Vous devrez mettre une date avec votre mois dans un objet Date
pour utiliser la deuxième option).
Month
enumVous pouvez utiliser le Month
enum. Cette énumération est définie dans le cadre du nouveau Java.time framework intégré à Java 8 et versions ultérieures.
int monthNumber = 10;
Month.of(monthNumber).name();
La sortie serait:
OCTOBRE
Localisez dans une langue autre que l’anglais en appelant getDisplayName
on the même Enum.
String output = Month.OCTOBER.getDisplayName ( TextStyle.FULL , Locale.CANADA_FRENCH );
sortie:
octobre
Prenez un tableau contenant le nom des mois.
String[] str = {"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"};
Alors où vous voulez prendre mois utiliser comme suit:
if(i<str.length)
monthString = str[i-1];
else
monthString = "Invalid month";
Vous pourriez avoir un tableau de chaînes et un accès par index.
String months[] = {"January", "February", "March", "April",
"May", "June", "July", "August", "September",
"October", "November", "December"};
Cela a déjà été mentionné, mais voici un moyen de placer le code dans une méthode:
public static String getMonthName(int monthIndex) {
return new DateFormatSymbols().getMonths()[monthIndex].toString();
}
ou si vous voulez créer une meilleure erreur qu'une exception ArrayIndexOutOfBoundsException:
public static String getMonthName(int monthIndex) {
//since this is zero based, 11 = December
if (monthIndex < 0 || monthIndex > 11 ) {
throw new IllegalArgumentException(monthIndex + " is not a valid month index.");
}
return new DateFormatSymbols().getMonths()[monthIndex].toString();
}
import Java.time.Month;
Month exemple = new Month.of(12);
//---return a Month object with value of December---
String month = exemple.toString();
//---if you want to convert Month to String---