public static void main(String[] args)
    {
        int num = 1;
        switch (num)
        {
            case 0: a: b: c: abc: def: d: e: f: abcdef: System.out.println(1);
                break;
            default:
                System.out.println(2);
                break;
        }    }
这case后面这样写都不会报错,
num=0也能进去,打印1;
num=2的时候打印2;
num=97的时候也是打印2;java中switch语句可以这样写吗??求大虾们帮忙解释。

解决方案 »

  1.   

    标签吧。
    IDE应该会提示你增加unused了吧。
    结合break或者continue之后的功能类似goto了。
    个人猜测
    一般都出现在循环里的。switch里这么写没什么意义吧。
      

  2.   


    这个跟switch无关,a: b: c: abc: def: d: e: f: abcdef:是语句的标签,定义了用来给带标签的break或continue语句控制程序流程用的。
    任何一条语句之前都可以加标签形如 xxxx:
    a: b: c: abc: def: d: e: f: abcdef:不过是个嵌套的标签而已。
    那句case可以这么理解:            case 0: 
    a: b: c: abc: def: d: e: f: abcdef: System.out.println(1);
                    break;如欲看更详细的带标签的break或continue语句的使用,可参看
    http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html
      

  3.   

    这么写不会报错,但是谁能读懂呢????abc: def: abcdef这些代表什么呢?switch后面可以是int,   long,   short,   char类型,只是不知道abc、def这些会算什么类型.......
      

  4.   

    case后面原则上是接非变量。你这样写可能不会报错但也没有任何意义吧?
      

  5.   

    可以这样写,  case 0: a: b: c: abc: def: d: e: f: abcdef: System.out.println(1);
    会默认的将a,b,c......这些转换成ascii 
    表示 当num为0,97,98,99......的时候打印 1
    否则打印 2
      

  6.   


        public static void main(String[] args)
        {
            int num = 1;
            switch (num)
            {
                case 0: 
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                case 6:
                    System.out.println(1);
                    break;
                default:
                    System.out.println(2);
                    break;
            }    }这样写就行。
    num=0-6,输出1;
    num=其他,输出2;
      

  7.   

    多个case连用,还是多个标签连用?
      

  8.   

    正好赶上楼主受启发的时候,建议每次都num= 0...5都给个break.
      

  9.   

    “开关”(Switch)有时也被划分为一种“选择语句”。根据一个整数表达式的值,switch语句可从一系列代码选出一段执行。它的格式如下: switch(整数选择因子) { 
    case 整数值1 : 语句; break; 
    case 整数值2 : 语句; break; 
    case 整数值3 : 语句; break; 
    case 整数值4 : 语句; break; 
    case 整数值5 : 语句; break; 
    //.. 
    default:语句; 
    } 其中,“整数选择因子”是一个特殊的表达式,能产生整数值。switch能将整数选择因子的结果与每个整数值比较。若发现相符的,就执行对应的语句(简单或复合语句)。若没有发现相符的,就执行default语句。 
    在上面的定义中,大家会注意到每个case均以一个break结尾。这样可使执行流程跳转至switch主体的末尾。这是构建switch语句的一种传统方式,但break是可选的。若省略break,会继续执行后面的case语句的代码,直到遇到一个break为止。尽管通常不想出现这种情况,但对有经验的程序员来说,也许能够善加利用。注意最后的default语句没有break,因为执行流程已到了break的跳转目的地。当然,如果考虑到编程风格方面的原因,完全可以在default语句的末尾放置一个break,尽管它并没有任何实际的用处。 
    switch语句是实现多路选择的一种易行方式(比如从一系列执行路径中挑选一个)。但它要求使用一个选择因子,并且必须是int或char那样的整数值。例如,假若将一个字串或者浮点数作为选择因子使用,那么它们在switch语句里是不会工作的。对于非整数类型,则必须使用一系列if语句。 
    下面这个例子可随机生成字母,并判断它们是元音还是辅音字母: //: VowelsAndConsonants.java 
    // Demonstrates the switch statement public class VowelsAndConsonants { 
      public static void main(String[] args) { 
        for(int i = 0; i < 100; i++) { 
          char c = (char)(Math.random() * 26 + 'a'); 
          System.out.print(c + ": "); 
          switch© { 
          case 'a': 
          case 'e': 
          case 'i': 
          case 'o': 
          case 'u': 
                    System.out.println("vowel"); 
                    break; 
          case 'y': 
          case 'w': 
                    System.out.println( 
                      "Sometimes a vowel"); 
                    break;