1,格式

switch(表达式){

case 常量1:执行语句1;

case 常量1:执行语句1;

... ...

case 常量n:执行语句n;

default:执行语句;}

2,说明:

  • 根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构的末尾处;
  • break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构;
  • switch结构中的表达式,只能是如下的6种类型之一:byte short char int 枚举类型(JDK 5.0新增),string类型(jdk7.0新增)
  • case之后只能声明常量,禁止写范围
  • break关键字是可选的
  • default相当于IF-ELSE结构中的 else;default结构是可选的;位置是可选的,但一般写最后;

3.练习

练习一:使用switch把小写类型的char转换为大写,只转换啊a,b,c,d,e,其他的输出为other;

  1. import java.util.Scanner;
  2.  
  3. public class SwitchTest1 {
  4. public static void main (String args[]) {
  5. System.out.println("请输入一个字符:");
  6. Scanner scan=new Scanner(System.in);
  7. 7 String intput = scan.next();
  8. 8 char c=intput.charAt(0);
  9. switch(c){
  10. case('a'):
  11. System.out.println('A');
  12. break;
  13. case('b'):
  14. System.out.println('B');
  15. break;
  16. case('c'):
  17. System.out.println('C');
  18. break;
  19. case('d'):
  20. System.out.println('D');
  21. break;
  22. case('e'):
  23. System.out.println('E');
  24. break;
  25. default:System.out.println("other");
  26.  
  27. }
  28.  
  29. }

运行结果:

练习二:对学生成绩大于60分的,输出合格,低于60分的,输出不合格;

  1. import java.util.Scanner;
  2.  
  3. public class switchTest2 {
  4. public static void main(String args[]) {
  5. System.out.println("请输入你的成绩:");
  6. Scanner grade=new Scanner(System.in);
  7. int grade1=grade.nextInt();
  8. switch(grade1/60) {
  9. case(0):
  10. System.out.println("不合格");
  11. break;
  12. case(1):
  13. System.out.println("合格");
  14. break;
  15. }
  16. }
  17.  
  18. }

运行结果:

切记switch变量不能使用范围,而当情况种数较多时,一一列出显然不必,switch结构具有多个case可以合并的性质。

一开始想到的是将变量写为grade1/10,case0-5输出为不合格,case6-10输出为合格;如图所示:

但显然没有除以60高效,所以做出修改;

练习三:从键盘分别输入年月日,判断这一天是当年的第几天?

注:判断一年是不是闰年的标准:①可以被4整除,但不能被100整除;或②可以被400整除;

  1. import java.util.Scanner;
  2.  
  3. /*
  4. 从键盘分别输入年月日,判断这一天是当年的第几天?
  5.  
  6. 注:判断一年是不是闰年的标准:①可以被4整除,但不能被100整除;或②可以被400整除;
  7. */
  8. public class SwitchExer {
  9. public static void main(String args[]) {
  10. Scanner scan=new Scanner(System.in);
  11. System.out.println("请输入年份:");
  12. int year=scan.nextInt();
  13. System.out.println("请输入月份:");
  14. int month=scan.nextInt();
  15. System.out.println("请输入天数:");
  16. int day=scan.nextInt();
  17. int sumdays=0;
  18. switch(month) {
  19. case 12:
  20. sumdays +=30;
  21. case 11:
  22. sumdays +=31;
  23. case 10:
  24. sumdays +=30;
  25. case 9:
  26. sumdays +=31;
  27. case 8:
  28. sumdays +=31;
  29. case 7:
  30. sumdays +=30;
  31. case 6:
  32. sumdays +=31;
  33. case 5:
  34. sumdays +=30;
  35. case 4:
  36. sumdays +=31;
  37. case 3://判断是不是闰年
  38. if((year%4==0 && year%100!=0) || year%400==0) {
  39. sumdays +=29;
  40. }else sumdays+=28;
  41. case 2:
  42. sumdays +=31;
  43. case 1:
  44. sumdays += day;
  45. default:System.out.println("输入有误,请重新输入:");
  46. }
  47. System.out.println(year+"年"+month+"月"+day+"日是当年的第"+sumdays+"天");
  48. }
  49. }

运行结果:

4,两个分支结构的使用选择策略:

凡是可以使用switch—case 都可以使用If-else,反之,不成立;

如果两者都可以使用(switch中表达式的取值情况不太多时),优先选择switch-case结构;原因:switch-case执行效率稍高;

switch-case分支结构总结的更多相关文章

  1. JAVA if条件语句,switch多分支结构,与逻辑运算符

    一.if条件语句 示例: import java.util.Scanner; public class Test{ public static void main(String[] args){ Sc ...

  2. 【2017-2-23】C#switch case分支语句,for循环语句

    switch case分支语句 switch(一个变量值) { case 值:要执行的代码段;break; case 值:要执行的代码段;break; … default:代码段;break;(def ...

  3. js中switch/case分支的值可以是变量或表达式

    在一些高级语言如C#中,switch分支的值只能是常量,而js中可以是变量或表达式: <!DOCTYPE html> <html lang="en"> &l ...

  4. c语言基础表达式, 关系运算符, 逻辑运算符, 位运算符, 数据的取值范围, 分支结构(if...else, switch...case)

    1.表达式: 表达式的判断是有无结果(值), 最简单的表达式是一个常量或变量, 如:12, a, 3 + 1, a + b, a + 5 都是表达式 2.BOOL(布尔)数据类型: c语言中除了基本数 ...

  5. 【2-23】分支语句(switch…case)及循环语句

    Switch-case分支语句与if语句作用相同,但需将情况都罗列出比较麻烦所以不常用. 其基本结构是: Switch(一个变量值) { Case 值1:要执行的代码段:break; Case 值2: ...

  6. iOS学习02C语言分支结构

    1. BOOL类型 返回值:真:YES  假:NO BOOL数据类型占一个字节的内存空间,占位符为%d. 计算机在识别时,YES就替换成1,NO就替换成0. bool是C语言中的布尔类型,返回值为tr ...

  7. iOS学习之C语言分支结构

    一.BOOL类型 返回值:真:YES   假:NO 定义一个布尔类型的变量 YES == 1, NO == 0 计算机在识别时,YES就替换成1,NO就替换成0 BOOL isGirl = YES; ...

  8. iOS开发-OC分支结构

     BOOL类型 返回值:真:YES  假:NO BOOL数据类型占一个字节的内存空间,占位符为%d. 计算机在识别时,YES就替换成1,NO就替换成0. bool是C语言中的布尔类型,返回值为true ...

  9. C# 利用键值对取代Switch...Case语句

    swich....case 条件分支多了之后,会严重的破坏程序的美观性. 比如这个 上述代码是用于两个进程之间通信的代码,由于通信的枚举特别的多,所以case的分支特别的多.导致了代码的可读性,可维护 ...

  10. Java 8- Java 分支结构 - if…else/switch

    Java 分支结构 - if...else/switch 顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构. Java有两种分支结构: if语句 switch语句 if语句 一个if语句包含 ...

随机推荐

  1. 多对多第三张表的创建方式 和 forms组件的使用

    目录 一.多对多第三张表的创建 1. 全自动方式 (1)实现代码 (2)优点和不足 2. 纯手撸方式(了解) (1)实现代码 (2)优点和不足 3. 半自动方式(推荐使用) (1)实现代码 (2)优点 ...

  2. 树莓派GPIO接口

    一.GPIO模式 GPIO分为板上模式和BCM模式 板上模式即为平时百度谷歌搜到的图,按顺序1-40排列(1B是26引脚) BCM模式为CPU分的,在图上一般会单独标记 二.引脚分类 1.电源:3.3 ...

  3. Hibernate 缓存机制详细分析

    在本篇随笔里将会分析一下hibernate的缓存机制,包括一级缓存(session级别).二级缓存(sessionFactory级别)以及查询缓存,当然还要讨论下我们的N+1的问题. 随笔虽长,但我相 ...

  4. <?xml version="1.0" encoding="UTF-8" ?>的意思

    <?xml version="1.0" encoding="UTF-8" ?> ?xml 这里是申明文件类型,这申明的是XML文件:version= ...

  5. Entity Framework Core 迁移命令

    Add-Migration init Update-Database init 修改model后,执行迁移的命令 更新数据库 每次更新都要{update}修改 Add-Migration {updat ...

  6. javascript中constructor指向问题

    首先用一个例子指出来constructor存在形式. function Fruit(){ } var f=new Fruit(); console.log(f.constructor);//打印出Fr ...

  7. 在echart组件下用canvans画三角形

    //使用的canvans绘制的三角形 drawArrow(){ var canvas = document.createElement('canvas');//创建一个元素 canvas.width ...

  8. QT:圆角设置

    Qt在设置窗口边框圆角时有两种方式,一种是设置样式,另一种是在paintEvent事件中绘制窗口.下面分别叙述用这两种方式来实现窗口边框圆角的效果. 一.使用setStyleSheet方法 this- ...

  9. CGI中使用Cookie

    在 http 协议一个很大的缺点就是不对用户身份的进行判断,这样给编程人员带来很大的不便, 而 cookie 功能的出现弥补了这个不足. cookie 就是在客户访问脚本的同时,通过客户的浏览器,在客 ...

  10. Python字典里的5个黑魔法

    Python里面有3大数据结构:列表,字典和集合.字典是常用的数据结构,里面有一些重要的技巧用法,我把这些都整理到一起,熟练掌握这些技巧之后,对自己的功力大有帮助. 1.字典的排序: 用万金油sort ...