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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

mentally

初级黑马

  • 黑马币:16

  • 帖子:16

  • 精华:0

© mentally 初级黑马   /  2014-4-20 17:18  /  1201 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 mentally 于 2014-4-20 17:46 编辑

public static void main(String[] args)
        {
                int x = 3;
                switch (x)
                {
                default:
                        System.out.println("null");
                        break;
                case 1:
                        System.out.println("1");
                break;
                case 2:
                        System.out.println("2");
                break;
                case 3:
                        System.out.println("3");
                case 4:
                        System.out.println("4");
                }

        }
以上是代码 switch语句不是要运行到break才会跳出  停止执行么 那么上面的代码应该是输出3 ,4,null但打印结果是3,4求解

7 个回复

倒序浏览
注意.你的代码
                case 3:
                        System.out.println("3");
                case 4:
                        System.out.println("4");
                }
case 3 没有break 程序会继续向下执行 输出 3 ,4 之后碰到了大括号 } 所以程序结束了
最后结果就是 3 ,4   
default: 是没有case值的时候才会执行
回复 使用道具 举报
case3后面缺个break,所以case3之后又继续往后把case4运行了。
回复 使用道具 举报
意思是说 switch语句除了遇到break会跳出执行到大括号}也会停止是吧
那么代码如果是这样的 int x = 3;
                switch (x)
                {
               
                case 1:
                        System.out.println("1");
                break;
                case 2:
                        System.out.println("2");
                break;
                case 3:
                        System.out.println("3");
                case 4:
                        System.out.println("4");
                default:
                        System.out.println("null");
                   }
选择了3 还是会继续会执行 default 然后遇到大括号停止       这是default选择了还执行。。
回复 使用道具 举报
  1. class AAA
  2. {
  3. public static void main(String[] args)
  4. {
  5. int x = 3;
  6. switch (x)
  7. {


  8. case 1:
  9. System.out.println("1");
  10. break;
  11. case 2:
  12. System.out.println("2");
  13. break;
  14. case 3:
  15. System.out.println("3");
  16. case 4:
  17. System.out.println("4");
  18. default:
  19. System.out.println("null");
  20. break;
  21. }

  22. }

  23. }
复制代码

回复 使用道具 举报
switch的结束的标志一共有两种:
1、case中执行完有break;
2、执行到"}",判断结束。

你的题目中执行的顺序应该是:
1、case1不满足
2、执行case2,仍然不满足
3、执行case3,满足了,打印“3”但是没有遇到break和},所以不再判断而是继续执行语句,打印“4”
4、遇到"}",判断结束

在这个过程中并没有执行到default.:)
回复 使用道具 举报 1 0
在switch case 判断式中,break、default 语句是可选的
default语句可以放在switch语句中的任意位置,但一般放在最后作为switch语句的最后一个分支。
break语句终止整个switch语句,若break不存在,下一个case语句将被执行。
而默认情况(即default)它用来执行指定情况都不为真时的操作,默认情况总是出现在switch语句块的最后。

楼主的语句中,已经int x=3进行判断,找到了与3对应的判断,所以为真,就不会执行default语句
所以输出结果为3和4

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
mentally 发表于 2014-4-20 17:32
意思是说 switch语句除了遇到break会跳出执行到大括号}也会停止是吧
那么代码如果是这样的 int x = 3;
   ...

选择了3 ,就会执行后面的所有代码(包括default),直到遇到break或着}才结束
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马