java_switch语句详解

来源:互联网 发布:java后端转前端 编辑:程序博客网 时间:2024/06/07 00:52

switch 语句的格式:

 

switch ( 整型或字符型变量 )

{

     case 变量可能值1 : 

         分支一;

         break;

   case 变量可能值2 : 

         分支二;

         break;

   case 变量可能值3 : 

         分支三;

         break;

   ...

   default :

       最后分支;

 

在 switch 的语法里,我们要学到4个关键字:switch、case 、break、default。

 

在 switch ( 变量 ) 这一行里,变量只能是整型或字符型。程序先读出这个变量的值,然后在各个"case"里查找哪个值和这个变量相等,如果相等,就算条件成立,程序执行相应的分支,直到碰上break或者switch语句结束。

 

 

了解一下switch,case,break,default的意思,对理解前面的一切也会有帮助,它们分别是:开关,情况,中断,默认(值)。那么用一句话套起来的说法就是:根据开关值的不同,执行不同的情况,直到遇上中断;如果所有的情况都不符合开关值,那么就执行默认的分支。

 

最后说一下关于switch中非常重要的几个注意点。

 

第一、switch ( 整型或字符型变量 ) 中,变量的类型如文中所标,只能是整型和字符类型。它们包含 int,char。当然无符类型或不同的长度整型(unsigned int,short,unsigned char)等都可以。另外,枚举类型(enum)内部也是由整型或字符类型实现。所以也可以。实型(浮点型)数就不行,如:

float a = 0.123;

switch(a) //错误!a不是整型或字符类型变量。  

{

  ....

}

 

第二、case 之后可以是直接的常量数值,如例中的1、2、3、4,也可以是一个使用常量计算式,如2+2等,但不能是变量或带有变量的表达式,如 a * 2等。当然也不能是实型数,如4.1,或2.0 / 2 等。

switch(formWay)

{

   case 2-1 :  //正确

     ...

   case a-2 :  //错误

     ...

   case 2.0 :  //错误

     ...

}

另外,在case 与常量值之后,需要一个冒号,请注意不要疏忽。

 

第三、break 的作用。

break 使得程序在执行完选中的分支后,可以跳出整个switch语句(即跳到switch接的一对{}之后),完成switch。如果没有这个break,程序将在继续前进到下一分支,直到遇到后面的break或者switch完成。

比如,假设现在程序进入case 1: 中的分支,但case 1 的分支这回没有加break:

 

case 1 :

    System.out.println("您是通过搜索引擎来到本网站的。");

case 2 : 

    System.out.println("您是通过朋友介绍来到本网站的。");

 

那么,程序在输出 "您是通过搜索引擎来到本网站的。" 之后,会继续输出case 2中的 "您是通过朋友介绍来到本网站的。" 。

请大家将前面实例中的代码片段改为如下(红色部分,即将所有的break都通过加//使之无效。):

    ...

  case 1 : 

       System.out.println("您是通过搜索引擎来到本网站的。" );

       //break;

    case 2 : 

       System.out.println("您是通过朋友介绍来到本网站的。");

       //break;

    case 3 : 

       System.out.println("您是通过报刊杂志来到本网站的。");

       //break;

    case 4 : 

       System.out.println("您是通过其它方法来到本网站的。");

       //break;

    default :

       System.out.println("错误的选择!请输入1~4的数字做出选择。");

    ...

 

运行后,结果会是如何?请大家动手试试,然后在评论中回答我。

 

第四、default是可选中,前面我们已经说过它的用处,及如果没有default,程序在找不到匹配的case分支后,将在switch语句范围内不做什么事,直接完成switch。大家也可以在实例中将default的代码注释掉,然后试运行,并且在选择时输入5。

...

//default :

   //cout << "错误的选择!请输入1~4的数字做出选择。" << endl;

...

 

第五、必要时,可在各个case中使用{}来明确产生独立的复合语句。

前面我们在讲if...语句和其它流程控制语句时,都使用{}来产生复合语句:

if (条件)

{

  分支一;

}

除非在分支中的语句正好只有一句,这里可以不需要花括号{}。但在switch的各个case语句里,我们在语法格式上就没有标出要使用{},请看:

switch ( 整型或字符型变量 )

{

     case 变量可能值1 : 

         分支一;

         break;

   case 变量可能值2 : 

      ....

}

 

一般教科书上只是说 case 分支可以不使用{},但这里我想提醒大家,并不是任何情况下case分支都可以不加{},比如你想在某个case里定义一个变量:

switch (formWay)

{

   case 1 :

     int a=2;  //错误。由于case不明确的范围,编译器无法在此处定义一个变量。

     ...

   case 2 :

     ...

}

 

在这种情况下,加上{}可以解决问题。

switch (formWay)

{

   case 1 :

 { 

     int a=2;  //正确,变量a被明确限定在当前{}范围内。

     ...

  } 

   case 2 :

     ...

}

***:下面是小编做的关于switch分支的练习题:

//判断你的分数达到什么分数线  100分:满分! 90分:优秀! 80分:良好! 70分:中等! 60分:及格! 60分以下不及格!
public static void main(String[] args) {
int num = 100;
switch(num/10){//先把100除10,然后10代表满分,9代表优秀,8代表良好,以此类推。。。
case 10:
System.out.println("你的分数达到满分!");
break;
case 9:
System.out.println("你的分数达到优秀!");
break;
case 8:
System.out.println("你的分数达到良好!");
break;
case 7:
System.out.println("你的分数达到中等!");
break;
case 6:
System.out.println("你的分数达到及格!");
break;
default://(以上都不是然后才默认这个)
System.out.println("你的分数达到不及格!");
break;
}

***:明天小编会给大家发一篇循环!

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信提示安装了插件怎么办 电脑上不了网怎么办 win10 win10电脑突然没网了怎么办 笔记本玩战争前线发热严重怎么办 玩战争前线总是闪退怎么办 uu加速器卡在29怎么办 新ipad下载不了东西怎么办 福昕pdf阅读器找不到图章怎么办 战地4没达到分数怎么办 植物在太暗环境怎么办 玩绝地求生机型不支持怎么办 安卓安装包损坏怎么办 方舟手游安装包损坏怎么办 7p新机耗电快怎么办 不小心把图片删了怎么办 腿上毛又长又多怎么办 征兵体检体重太轻怎么办 体检发现颈部有淋巴节怎么办? 4岁宝宝汗毛重怎么办 嘴巴张开闭不上怎么办 口张开闭不上怎么办 要去当兵有痔疮怎么办 狗舔的东西吃了怎么办 婚检说生过孩子怎么办 劳动法规定身体有疾病的怎么办 铁路对职工醉驾怎么办 入职体检高血糖怎么办 睾丸捏一下很疼怎么办 小孩睾丸受外力红肿该怎么办 睾丸炎症怎么办啊会不会不育呢 腰疼连着睾丸疼怎么办 为什么结石会睾丸疼怎么办 感觉自己睾丸变小了怎么办 宝宝小丁丁肿了怎么办 两岁宝宝高低肩怎么办 参军体检视力不过关怎么办 验兵视力不过关怎么办 军检了感冒了怎么办 双侧附睾头囊肿怎么办 睾丸上面长疙瘩很痒都抓烂了怎么办 睾丸小引起精子数量少怎么办