Em uma instrução switch, por que todos os casos estão sendo executado
Eu tenho esse código com oswitch
declaração que recebi desteposta e funciona absolutamente bem:
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";
}
}
Mas se eu mudar para algo como o seguinte, ele quebra, como todos os casos além decase 1
é executado:
static String getOrdinal(final int day) {
StringBuilder ordinalBuilder = new StringBuilder();
ordinalBuilder.append("<sup>");
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("</sup>");
return ordinalBuilder.toString();
}
This prints2<sup>ndrdth</sup>
quando eu passo2
. Tentei alterar o construtor para o buffer, mas obtive a mesma resposta ... Isso pode ser um bug ou estou cometendo algum erro?