A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dongyangzhang 中级黑马   /  2013-6-11 20:21  /  1584 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 dongyangzhang 于 2013-6-11 20:53 编辑

int num = 4;
        int y = 0;
        switch(num) {
                case 1:
                        y++;
                case 2:
                        y+=2;        
                case 3:
                        y+=3;
                case 4:
                        y+=4;
                case 5:
                        y+=5;
        }
        System.out.println(y);
我认为应该输出4的,怎么会输出9呢?

5 个回复

倒序浏览
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中的 "您是通过朋友介绍来到本网站的。"
下面这个代码就是你想要的!!!
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                
  6.                 int num = 4;
  7.         int y = 0;
  8.         switch(num)
  9.                 {
  10.                 case 1:
  11.                         y++;break;

  12.                 case 2:
  13.                         y+=2;break;     
  14.                 case 3:
  15.                         y+=3;break;
  16.                 case 4:
  17.                         y+=4;break;
  18.                 case 5:
  19.                         y+=5;break;
  20.         }
  21.         System.out.println(y);
  22.         }
  23. }
复制代码
回复 使用道具 举报
1,Switc语句格式:

Swith(表达式)
{
       case       取值1
               执行语句 ;
              Break;
case       取值2
               执行语句 ;
              Break;
…….
default
               执行语句 ;
              Break;    // 最后的break可省略。
}


2,Switch结束的两种情况:遇到break,执行到语句最后一个大括号。

int num = 4;
        int y = 0;
        switch(num) {
                case 1://条件不符合,不执行下面语句。
                        y++;
                case 2://条件不符合,不执行下面语句。
                        y+=2;        
                case 3://条件不符合,不执行下面语句。
                        y+=3;
                case 4://条件符合,执行下面的语句,y=4。
                        y+=4;
                case 5://由于没有遇到break,也没有执行到语句最后一个大括号,因此继续执行下面语句,y=4+5=9
                        y+=5;
        }
        System.out.println(y);


回复 使用道具 举报
杜光 发表于 2013-6-11 20:41
break 的作用。
break 使得程序在执行完选中的分支后,可以跳出整个switch语句(即跳到switch接的一对{} ...

谢谢了!!!
回复 使用道具 举报
李晓峰 发表于 2013-6-11 20:43
1,Switc语句格式:
Swith(表达式){       case        取值1:               执行语句 ;              Br ...

很感谢你嘿嘿
回复 使用道具 举报
你好,你在Y相加以后没有写break跳出语句,所以从开始符合的位置case4一直往下相加,case4+case5=9,所以你的结果输出为9,如果加上跳出语句,就可以得到你想要的,l另外,可以加上default:语句来判断错误情况,增加代码的健壮性。
class SwitchDemo
{
        public static void main(String[] Args)
        {
                int num = 4;
        int y = 0;
        switch(num) {
                case 1:
                        y++;
                                break;
                case 2:
                        y+=2;  
                                break;
                case 3:
                        y+=3;
                break;
                                case 4:
                        y+=4;
                                break;
                case 5:
                        y+=5;
                                break;
                                default:
                                        System.out.println("输入错误");
        }
        System.out.println(y);
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马