黑马程序员技术交流社区

标题: 请帮忙看看这个输出? [打印本页]

作者: dongyangzhang    时间: 2013-6-11 20:21
标题: 请帮忙看看这个输出?
本帖最后由 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呢?


作者: 杜光    时间: 2013-6-11 20:41
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. }
复制代码

作者: 李晓峰    时间: 2013-6-11 20:43
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);



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

谢谢了!!!
作者: dongyangzhang    时间: 2013-6-11 20:53
李晓峰 发表于 2013-6-11 20:43
1,Switc语句格式:
Swith(表达式){       case        取值1:               执行语句 ;              Br ...

很感谢你嘿嘿
作者: 李征    时间: 2013-6-11 20:54
你好,你在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);
        }
}





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