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执行效率稍高;

  • 相关阅读:
    PAT (Basic Level) Practise 1013 数素数
    PAT (Basic Level) Practise 1014 福尔摩斯的约会
    codeforces 814B.An express train to reveries 解题报告
    KMP算法
    rsync工具
    codeforces 777C.Alyona and Spreadsheet 解题报告
    codeforces 798C.Mike and gcd problem 解题报告
    nginx + tomcat多实例
    MongoDB副本集
    指针的艺术(转载)
  • 原文地址:https://www.cnblogs.com/boogie-xy/p/11296622.html
Copyright © 2011-2022 走看看