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

为什么在Java的switch语句中不能使用“ continue”?

陈哲
2023-03-14
问题内容

为什么下面的代码:

class swi  
{
    public static void main(String[] args)  
    {  
        int a=98;
        switch(a)
        {
            default:{ System.out.println("default");continue;}
            case 'b':{ System.out.println(a); continue;}
            case 'a':{ System.out.println(a);}
        }
        System.out.println("Switch Completed");
    }
}

给出错误:

在循环外继续


问题答案:

失败是switch语句的标准行为,因此,在switch语句中使用Continue没有意义。Continue语句仅在for / while /
do..while循环中使用。

根据我对您意图的理解,您可能想写:

System.out.println("default");
if ( (a == 'a') || (a == 'b') ){
    System.out.println(a);
}

我还建议您将默认条件放在最后。

编辑:continue语句不能在switch语句中使用并不完全正确。(带有理想标记的) continue 语句完全有效。例如:

public class Main {
public static void main(String[] args) {
    loop:
    for (int i=0; i<10; i++) {
        switch (i) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 9:
            continue loop;
        }

        System.out.println(i);
    }
}
}

这将产生以下输出:0 2 4 6 8



 类似资料:
  • 问题内容: 此功能是否将在以后的Java版本中使用? 有人可以解释为什么我不能这样做吗,就像Java 语句起作用的技术方式一样? 问题答案: 带有案例的switch语句已在Java SE 7中实现,至少在首次提出要求后的 16年。没有提供延迟的明确原因,但可能与性能有关。 在JDK 7中实现 现在,该功能已 通过“脱糖”过程实现。在声明时使用常量的干净,高级语法在编译时扩展为遵循模式的更复杂的代码

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

  • 我有两种枚举类型(并希望用户能够添加自己的)。 如果我不在接受枚举类型的方法中使用枚举属性,这就很好。 但是,如果我希望模板E被识别为一个枚举(在这里的开关中使用),我会得到错误“不能打开类型E的值”(在Eclipse中,开关(E)中的“E”带有红色下划线) 我对擦除有一点了解,它在编译时擦除了关于模板的所有信息,所以这就是问题所在。但是我尝试传入clazz类或者实现一个接口都没有成功。对此有什么

  • 问题内容: 我决定使用Swift的case语句和元组。它看起来像是该语言的较酷功能之一。 我决定玩月/日/年元组。令我惊讶的是,我不能在switch语句中使用常量元组值作为案例。这是一个示例(可以粘贴到Playground中并运行) 注释掉的代码不会编译(如果重要的话,在Xcode 6.3中)。在下面的情况下(我分别列出了joesBirthday元组的所有元素)更难键入且更难阅读,确实可以工作)

  • 问题内容: 这是Sun Java教程 的摘录: 一种开关用的工作原理,,,和原始数据类型。它还与枚举类型(在类和继承讨论)和少数特殊类作品是“包装”某些基本类型:,,,和(在简单的数据对象讨论)。 不允许原始数据类型是有充分理由的。有人知道这是什么吗? 问题答案: 我认为在某种程度上,这可能是基于开关的典型用法的任意决定。 切换基本上可以通过两种方式(或原则上是组合)来实现:对于少数情况或值分散的

  • 问题内容: (注:编辑过的问题;先前的意图不明确) 考虑以下代码: 此代码可以正常工作。 但是,如果我替换: 与: 然后编译器抱怨: java:/path/to/Foo.java:whatever:枚举开关大小写标签必须是枚举常量的非限定名称 (要求内联常量的一个原因是switch语句在每种情况下都需要常量,并且两个这样的常量值可能都不相同。编译器在编译时检查switch语句中是否有重复的常量值;