黑马程序员技术交流社区

标题: Switch case问题? [打印本页]

作者: 郭佳佳    时间: 2012-9-6 20:17
标题: Switch case问题?
case 不一定后面一定跟break,也可以多个case跟一个 break?这里面有什么规则么
作者: 李 玉林    时间: 2012-9-6 20:23
如果多个case共用一个语句的话,可以在最后一个case后面加一个break就可以了,否则每一个case后面都要跟一个break
作者: 徐宏伟    时间: 2012-9-6 20:39
1、正常情况下:
  1. switch(DataType var)
  2. {
  3.         case var1:
  4.                 //----
  5.                 break;
  6.         case var2:
  7.                 //----
  8.                 break;
  9.         case var3:
  10.                 //----
  11.                 break;
  12.         ……
  13.         default:
  14.                 break;
  15.        
  16. }
复制代码
//==========其中上面每一个case分支对应一个处理;并且case分支的var不可以一样;

2、特殊情况
(1)、(由于switch--case能处理的是对于离散型变量---假如多个变量的处理方法一样的话,就可以这么写)
  1. switch(DataType var)
  2. {
  3.         case var1:
  4.         case var2:
  5.         case var3:
  6.                 //----
  7.                 break;
  8.         case var4:
  9.                 //----
  10.                 break;
  11.         case var5:
  12.                 //----
  13.                 break;
  14.         ……
  15.         default:
  16.                 break;
  17.        
  18. }
复制代码
//======这样在var为var1、var2、var3的时候处理方法都是一样的;
(2)、其实对于break不一定是必须的(例如下面)
  1. switch(DataType var)
  2. {
  3.         case var1:
  4.                 {
  5.                         //---处理方法---
  6.                         return;
  7.                 }
  8.         case var2:
  9.                 //----
  10.                 break;

  11.         ……
  12.         default:
  13.                 break;
  14.        
  15. }
复制代码
//=======假如满足分支var1的时候,程序就直接return了,这样也是允许的;
作者: 杨千里    时间: 2012-9-6 20:56
在switch中case是没有顺序的,要先从case开始执行,最后执行default
case A:
       .......
       break;
case B:
       .......
       break;
------------------------------------也可以这样
case B:
       .......
       break;
case A:
       .......
       break;
switch的结束有两种方式一个是执行到break,一个是执行到语句的结尾。
switch如果条件都不符合,则执行default,但是default在前,则会再次执行下边的语句,而不再判断case直到碰见break。

多个case可以对应一个条件执行语句。
例如:
case A :
case B :
case C:
........
       .....................
       break;
..........................................

作者: 刘欢(安阳)    时间: 2012-9-6 22:40
额,一般是这几个case的操作情况相同的时候这么做。
只要跟同一个break的几个case后面(除了离break最近的那个),都没有独立的执行语句就可以,不然会报错
作者: 郭佳佳    时间: 2012-9-6 23:14
回答的都不错啊,很给力,谢谢你们了
作者: 许庭洲    时间: 2012-9-7 08:19
1. switch(i)
    case 1:
    case 2:
    //
    break;
2. C#中的break不写是不行的,除了合并case情况。
作者: 王荟越    时间: 2012-9-14 09:45
对,一般是这几个case的情况相同的时候会这么写。
但case情况(表达式值)不同时,就要在每个后加 break




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2