我的switch语句没有编译

时间:2015-01-30 05:30:26

标签: java switch-statement

这不是编译!我想我做的一切都是对的。我没有在这里看到错误:

class A {

    public static void main(String args[]) {

        int x = 10;
        switch (X) {

            case 2:
                System.out.println("2");

            default:
                System.out.println("Def.");

            case 3:
                System.out.println("3");

            case 4:
                System.out.println("4");

        }
    }
}

4 个答案:

答案 0 :(得分:1)

尝试更改x的大小写并添加一些break语句。

class A {

  public static void main(String args[]) {

    int x = 10;
    switch (x) {

        case 2:
            System.out.println("2");
            break;
        case 3:
            System.out.println("3");
            break;
        case 4:
            System.out.println("4");
            break;
        default:
            System.out.println("Def.");
    }
  }
}

答案 1 :(得分:0)

宣言中有x,交换机中有X。 Java区分大小写。 Xx

不同

switch查看cases,如果case满足条件,则会执行statements跟随它,直到找到break或结束switch这是强制性的,来自programming and logical perspective所有案例结尾处的default

答案 2 :(得分:0)

您声明的变量名为x,但在您的switch语句中,您引用的是X。所以一定要先改变它。其次,您需要在每个案例块的末尾放置break;语句。

switch (x) {
    case 4:
        // sysout
        break;
    case 3:
        // sysout
        break;
}

最后,您还应考虑将默认设置放在最后。但是,这只是一个使代码更易于阅读的惯例。

答案 3 :(得分:-2)

  1. 您用于switch的变量不是您声明的相同变量。将套管固定在x

  2. default 应该是switch声明中的最后一个选项。这样做是很好的做法,因为它通常是您要执行的最后一个分支。

  3. 您尚未在任何break语句中放置case。简而言之 - 如果您未在break中放置case,则会执行后续的case。你需要突然回来帮助控制打印出来的东西。

    以上存在,以便人们可以做出堕落案件;如果你有两个值应该在同一个分支中,你可以这样表达它们:

    case 2:
    case 3:
        System.out.println("Number is prime and less than 5");
        break;
    

    在您的任何案例陈述之后,立即在break之后放置{{1}}。否则你的印刷品看起来不对。