黑马程序员技术交流社区

标题: 关于default [打印本页]

作者: HM周一帆    时间: 2013-3-27 21:03
标题: 关于default
本帖最后由 HM周一帆 于 2013-3-28 19:59 编辑

switch (4) {
                case 2:
                        System.out.println("a");
                        break;
                case 3:
                        System.out.println("b");
                        break;
                default:
                        System.out.println("d");
                        break;
                case 4:
                        System.out.println("c");
答案是c为什么不执行default  如果把default放到最后 结果是cd  求解
作者: 曹玉龙    时间: 2013-3-27 21:14
本帖最后由 曹玉龙 于 2013-3-27 21:16 编辑

你的代码少了点东西,case 4的时候没有加上break;,执行完这行,继续向下执行了所以多打出一个字符。
补全就正常了:
  1. class Demo {
  2.         public static void main(String[] args) {

  3.                 switch (4) {
  4.                 case 2:
  5.                         System.out.println("a");
  6.                         break;
  7.                 case 3:
  8.                         System.out.println("b");
  9.                         break;

  10.                 case 4:
  11.                         System.out.println("c");
  12.                         break;

  13.                 default:
  14.                         System.out.println("d");
  15.                         break;
  16.                 }
  17.         }
  18. }
复制代码

作者: 胡志超    时间: 2013-3-27 21:16
switch (4) {
                case 2:
                        System.out.println("a");
                        break;
                case 3:
                        System.out.println("b");
                        break;
                default:
                        System.out.println("d");
                        break;
                case 4:
                        System.out.println("c");
switch-case机制是一进内存就把所有选项全部加载进程序, default的位置并不影响程序的执行结果
所以结果为c

switch (4) {
                case 2:
                        System.out.println("a");
                        break;
                case 3:
                        System.out.println("b");
                        break;
                case 4:
                        System.out.println("c");
                default:
                        System.out.println("d");
                        break;

而如果default在最后,又因为case 4 之后没有break语句跳出switch-case判断,所有会继续执行到
default语句,所以输出结果为cd


作者: 伊廷文    时间: 2013-3-27 21:16
本题 中,有参数不满足任何 case,则执行 default  语句中的代码,本题因为满足参数所以输出c,把default放到最后输出cd是因为break是中断控制流程的语句,如果没有break语句则不中断,代码将继续执行下去,所以是cd
作者: itserious    时间: 2013-3-27 21:16
default  是swich语句中,所以选项都不满足的时候才会执行,

但是你不能把break弄掉了,不然会出现贯穿的现象,

直到遇到break或是大括号为止。

        switch (2) {
                case 2:
                        System.out.println("a");
                        break;
                case 3:
                        System.out.println("b");
                        break;
                default:
                        System.out.println("d");
                        break;
                case 4:
                        System.out.println("c");
                        break;//你一定是把这个break弄掉了吧。
                }
作者: 丁一    时间: 2013-3-27 21:17
输出c后 就不判断执行case下面的语句了  如果把 default 放在最后能执行,是因为你 case4 没有break,
switch 首先判断有没有满足条件的,如果有执行 case 内容,没有执行 default 内容;执行后就顺序向下执行直到遇见第一个break 或是} 结束 switch
作者: HM周一帆    时间: 2013-3-27 21:17
曹玉龙 发表于 2013-3-27 21:14
你的代码少了点东西,case 4的时候没有加上break;
补全就正常了:

你可能是理解错我的意思了  break  不加也行  不报错的 但是就没有用switch 的作用了
作者: strawberry2013    时间: 2013-3-27 21:51
switch 语句的格式:
 
switch ( 整型或字符型变量 )
{
     case 变量可能值1 :
         分支一;
         break;
   case 变量可能值2 :
         分支二;
         break;
   case 变量可能值3 :
         分支三;
         break;
   ...
   default :
       最后分支;

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

说一下关于switch中非常重要的几个注意点。
        第一、switch ( 整型或字符型变量 ) 中,变量的类型如文中所标,只能是整型和字符类型,实型(浮点型)数就不行
        第二、case 之后可以是直接的常量数值,如例中的1、2、3、4,也可以是一个使用常量计算式,如2+2等,但不能是变量或带有变量的表达式,如 a * 2等。当然也不能是实型数,如4.1,或2.0 / 2 等。
        第三、break 的作用,break 使得程序在执行完选中的分支后,可以跳出整个switch语句(即跳到switch接的一对{}之后),完成switch。如果没有这个break,程序将在继续前进到下一分支,直到遇到后面的break或者switch完成。
        第四、default是可选中,如果没有default,程序在找不到匹配的case分支后,将在switch语句范围内不做什么事,直接完成switch。


作者: 胡军    时间: 2013-3-27 22:11
switch语句中,无论default在什么位置,都是先判断case语句,如果case符合就去执行case中的语句,如果case都不符合,才去执行default语句。这个知识点毕老师在视频里讲过的。




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