У меня есть этот код с оператором switch
, который я получил из этого сообщения , и он работает абсолютно нормально:
String getOrdinal(final int day) {
if (day >= 11 && day <= 13) {
return "th";
}
switch (day % 10) {
case 1: return "st";
case 2: return "nd";
case 3: return "rd";
default: return "th";
}
}
Но если я изменю его на что-то вроде следующего, он сломается, поскольку будут выполнены все случаи, кроме case 1
:
static String getOrdinal(final int day) {
StringBuilder ordinalBuilder = new StringBuilder();
ordinalBuilder.append("");
if (day >= 11 && day <= 13) {
ordinalBuilder.append("th") ;
}
switch (day % 10) {
case 1: ordinalBuilder.append("st");
case 2: ordinalBuilder.append("nd");
case 3: ordinalBuilder.append("rd");
default: ordinalBuilder.append("th");
}
ordinalBuilder.append("");
return ordinalBuilder.toString();
}
Это напечатает 2 ndrdth sup>
, когда я передаю 2
. Я попытался изменить построитель на буфер, но получил тот же ответ ... Может это ошибка или я ошибаюсь?