在switch语句中,为什么所有情况都被执行?

我将这段代码与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("<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();

}

2<sup>ndrdth</sup>当我通过时会打印出来2。我尝试将生成器更改为缓冲,但是得到了相同的响应…这可能是错误,还是我犯了一些错误?

回答:

这是您代码中的错误。您忘了break每次输入case

switch (day % 10) {

case 1: ordinalBuilder.append("st"); break;

case 2: ordinalBuilder.append("nd"); break;

case 3: ordinalBuilder.append("rd"); break;

default: ordinalBuilder.append("th"); break;

}

以上是 在switch语句中,为什么所有情况都被执行? 的全部内容, 来源链接: utcz.com/qa/429237.html

回到顶部