0
点赞
收藏
分享

微信扫一扫

Java核心基础:选择结构之switch语句


概述

switch语句, 一般是用于做固定值判断的, 在实际开发中, 用到的频率也非常高, 所以也是要求大家掌握的知识点.

 格式

switch(表达式) {
    case 值1:
        语句体1;
        break;
    case 值2:
        语句体2;
        break;
    case 值3:
        语句体3;
        break;
    ...    //根据需求, 可以写多组case.
    default:
        语句体n;
        break;
}

格式详解

Java核心基础:选择结构之switch语句_大数据

 

执行流程

先计算表达式的值, 然后按照从上往下的顺序依次和每一个case对应的值相匹配.

如果能匹配成功, 则执行该case对应的语句体, 然后执行break, 至此, 整个switch语句结束.

如果和所有的case值都不匹配, 则执行default对应的语句体, 然后执行break, 至此, 整个switch语句结束.

  • : default语句就类似于if. else语句中的else, 当所有条件都不满足时才会执行.

执行流程图解

Java核心基础:选择结构之switch语句_java_02

示例一: 春夏秋冬

需求

一年有12个月, 分属于春夏秋冬4个季节, 键盘录入一个月份, 请用程序实现判断该月份属于哪个季节, 并输出。

具体标准如下:

  • 输入: 1、2、12 输出:冬季
  • 输入: 3、4、5 输出:春季
  • 输入: 6、7、8 输出:夏季
  • 输入: 9、10、11 输出:秋季
  • 输入:其它数字 输出:数字有误

参考代码

import java.util.Scanner;

public class SwitchDemo07 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请录入一个月份: ");
int month = sc.nextInt();
switch (month) {
case 12:
System.out.println("冬季");
break;
case 1:
System.out.println("冬季");
break;
case 2:
System.out.println("冬季");
break;
case 3:
System.out.println("春季");
break;
case 4:
System.out.println("春季");
break;
case 5:
System.out.println("春季");
break;
case 6:
System.out.println("夏季");
break;
case 7:
System.out.println("夏季");
break;
case 8:
System.out.println("夏季");
break;
case 9:
System.out.println("秋季");
break;
case 10:
System.out.println("秋季");
break;
case 11:
System.out.println("秋季");
break;
default:
System.out.println("没有这样的日期");
break;
}
}
}

 

case穿透

概述

在switch语句中,如果case的后面不写break,将出现case穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。

格式

switch(表达式) {
    case 值1:
        语句体1; //假设表达式的值 = 值1, 则执行完语句体1后, 不会判断第二个case, 直接执行语句体2;
        break;
    case 值2:
        语句体2;
        break;
    case 值3:
        语句体3;
        break;
    ...    //根据需求, 可以写多组case.
    default:
        语句体n;
        break;
}

需求 通过case穿透, 优化刚才的春夏秋冬案例.

参考代码

import java.util.Scanner;

public class SwitchDemo08 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请录入一个月份: ");
int month = sc.nextInt();
switch (month) {
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
default:
System.out.println("没有这样的日期");
break;
}
}
}

思考题

switch语句的小括号中, 可以放什么?

default语句必须放到switch语句的最后吗?

break关键字可以省略吗? 对执行结果是否有影响?

案例二: 发放奖励

需求

小明快要期末考试了,小明爸爸对他说,会根据他的考试成绩,送他不同的礼物.

假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。

礼物标准如下:

  • 90~100 山地自行车一辆
  • 80~89 游乐场玩一次
  • 70~79 变形金刚玩具一个
  • 70以下 胖揍一顿

参考代码

import java.util.Scanner;

public class SwitchDemo09 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请录入小明的考试成绩: ");
int score = sc.nextInt();
if (score >= 0 && score <= 100) {
//合法成绩
switch (score / 10) {
case 10:
case 9:
System.out.println("奖励小明: 山地自行车一辆");
break;
case 8:
System.out.println("奖励小明: 游乐场玩儿一次");
break;
case 7:
System.out.println("奖励小明: 变形金刚玩具一个");
break;
default:
System.out.println("奖励小明: 男女双混组合拳 + 扫帚棒法");
break;
}
} else {
//非法成绩
System.out.println("您录入的成绩有误!");
}
}
}

 

举报

相关推荐

选择结构语句-----switch语句

JAVA选择结构语句

0 条评论