当前位置: 首页 > 面试题库 >

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

双元魁
2023-03-14
问题内容

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


 类似资料:
  • 问题内容: 只是想弄清楚如何对Java switch语句使用多种情况。这是我要执行的操作的一个示例: 与必须要做的事情: 有什么想法,如果可能的话,或者什么是好的选择? 问题答案: 可悲的是,这在Java中是不可能的。您将不得不使用using 语句。

  • 问题内容: 在 Java 7中 ,对象可以位于语句的表达式中。有人可以从官方文档中解释以下声明吗? 与使用链式if-then-else语句相比,Java编译器通常从使用 String对象的 switch语句生成更有效的字节码。 问题答案: Java代码 具有一个类的两个版本,例如 与: 与: 字节码 让我们看一下字节码。获取版本的字节码: 获取版本的字节码: 结论 在第一个版本中,通过为每个条件调

  • 问题内容: 说我有一个清单。在什么情况下被称为? 我基本上理解了文档,但是我也想看到一个示例来毫无疑问地阐明其用法。 问题答案: 当Python尝试将两个对象相乘时,它首先尝试调用左侧对象的方法。如果左对象没有方法(或者该方法返回,表明它不适用于所讨论的右操作数),则Python希望知道右对象是否可以进行乘法。如果右操作数与左操作数的类型相同,Python就会知道它不能,因为如果左对象不能做到这一

  • 问题内容: 对于建议抛出异常的人: 抛出异常不会给我编译时错误,而是给我运行时错误。我知道我会抛出异常,我宁愿在编译时死掉,也不愿在运行时死掉。 首先,我正在使用Eclipse 3.4。 我有一个数据模型,它的mode属性是Enum。 我目前正在编写此模型的视图,并且我有代码 我收到一个错误“此方法必须返回类型为java.awt.Color的结果”,因为我没有默认大小写,并且在函数末尾没有返回xx

  • 所以基本上我有一个学校的项目,它包含一个time循环中的开关语句。 假设我输入“1”,它在大小写“1”中运行代码。然后它应该在之后中断。但默认代码也总是运行。 这是案例“1”代码: 这是默认代码: 以下是输出: 我很有信心我的代码是正确的,但是如果我缺少什么,请告诉我如何修复它,谢谢。

  • 问题内容: 切换语句修复: switch语句仅返回最后一种情况,即情况4,“#0R0dfdf0FF”。我该如何解决这个问题,以使文本视图显示对话框中单击的那个?我是一个新手,所以真的很感谢您的帮助。 } 问题答案: 交换机分支的末尾缺少您。