zoukankan      html  css  js  c++  java
  • switch-case分支结构总结

    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         String intput = scan.next();
     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     }
    30     

    运行结果:

    练习二:对学生成绩大于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执行效率稍高;

  • 相关阅读:
    [转] c#有关winform的两个代码片段(多线程操作窗体控件与窗体淡入淡出效果)
    微软企业库源码解析——DAAB(三)DatabaseFactory(其余的Strategy)
    软件工程真的那么难么
    在VS2010中的注册微软企业库4.1
    对为什么使用访问器(getter),以及什么是继承的一点看法
    微软企业库源码解析——DAAB(四)DatabaseFactory小结
    Unity与ASP.NET的集成(官方方法)
    ASPxGridView导出pdf时中文乱码的解决方案
    删除WSS卸载后遗留的数据库
    让微软企业库中的Email Trace Listener使用需要身份验证的SMTP服务器
  • 原文地址:https://www.cnblogs.com/boogie-xy/p/11296622.html
Copyright © 2011-2022 走看看