switch-case分支结构总结

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

相关推荐

果胶铋饭前半小时吃还是一小时吃好
365娱乐app官方版下载

果胶铋饭前半小时吃还是一小时吃好

📅 06-28 👁️ 8921
DOC转JPG - 在线转换文档文件
全球最大体育平台365

DOC转JPG - 在线转换文档文件

📅 06-28 👁️ 8914
r3智能戒指极控者智能魔戒
365娱乐app官方版下载

r3智能戒指极控者智能魔戒

📅 06-30 👁️ 5923