switch-case分支结构总结

巧了我就是萌 提交于 2021-02-01 09:25:20

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

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!