switch-case

news/2024/12/23 4:29:48/

switch-case

1.格式

在这里插入图片描述

2.说明:

  1. 根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。 当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句, 直到遇到break关键字或此switch-case结构 末尾结束为止。
  2. break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构
  3. switch结构中的表达式,只能是如下的6种数据类型之一:
    byte 、
    short、
    char、
    int、
    枚举类型(JDK5.0新增)、
    String类型(JDK7.0新增)
  4. case 之后只能声明常量。不能声明范围。
  5. break关键字是可选的
  6. default:相当于if-else结构中的else. default结构是可选的,而且位置是灵活的。
    在这里插入图片描述

案例1:

    @Testpublic void test01() {int number = 2;switch(number){case 0:System.out.println("zero");case 1:System.out.println("one");case 2:System.out.println("two");case 3:System.out.println("three");default:System.out.println("other");}}

在这里插入图片描述
穿透:

在没有break关键字的情况下 ,匹配成功后,仍然继续向下执行其他case结构中的执行语句.

直到遇到break关键字或此switch-case结构 末尾结束为止。

案例 2 :

   @Testpublic void test01() {String season = "summer";switch (season) {case "spring":System.out.println("春暖花开");break;case "summer":System.out.println("夏日炎炎");break;case "autumn":System.out.println("秋高气爽");break;case "winter":System.out.println("冬雪皑皑");break;default:System.out.println("季节输入有误");break;}}

在这里插入图片描述

经典例题;

如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并。

例题 1:

对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”

@Testpublic void test01() {int score = 78;switch (score / 10) {case 0:case 1:case 2:case 3:case 4:case 5:System.out.println("不及格");break;case 6:case 7:case 8:case 9:case 10:System.out.println("及格");break;}//更优的解决方案:switch(score / 60){case 0:System.out.println("不及格");break;case 1:System.out.println("及格");break;}}

在这里插入图片描述

例题 2:

从键盘分别输入年、月、日,判断这一天是当年的第几天

方式一: 用if -else 写起来比较冗余

import java.util.Scanner;
class SwitchCaseTest2 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入2019年的month:");int month = scan.nextInt();System.out.println("请输入2019年的day:");int day = scan.nextInt();//定义一个变量来保存总天数int sumDays = 0;//方式一:冗余if(month == 1){sumDays = day;}else if(month == 2){sumDays = 31 + day;}else if(month == 3){sumDays = 31 + 28 + day;}else if(month == 4){sumDays = 31 + 28 + 31 + day;}//...else{//month == 12//sumDays = ..... + day;}}	
}

方式二:冗余

class SwitchCaseTest2 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入2019年的month:");int month = scan.nextInt();System.out.println("请输入2019年的day:");int day = scan.nextInt();//定义一个变量来保存总天数int sumDays = 0;switch(month){case 1:sumDays = day;break;case 2:sumDays = 31 + day;break;case 3:sumDays = 31 + 28 + day;break;...}}
}	

注:判断一年是否是闰年的标准:

1)可以被4整除,但不可被100整除 或
2)可以被400整除

方式三: switch-case优解:

class SwitchCaseExer {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入year:");int year = scan.nextInt();System.out.println("请输入month:");int month = scan.nextInt();System.out.println("请输入day:");int day = scan.nextInt();//定义一个变量来保存总天数int sumDays = 0;switch(month){case 12:sumDays += 30;case 11:sumDays += 31;case 10:sumDays += 30;case 9:sumDays += 31;case 8:sumDays += 31;case 7:sumDays += 30;case 6:sumDays += 31;case 5:sumDays += 30;case 4:sumDays += 31;case 3://sumDays += 28;//判断year是否是闰年if((year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0){sumDays += 29;}else{sumDays += 28;}case 2:sumDays += 31;case 1:sumDays += day;}System.out.println(year + "年" + month + "月" + day + "日是当年的第" + sumDays + "天");}
}

switch 和 if 语句对比

在这里插入图片描述

说明:

  1. 凡是可以使用switch-case的结构,都可以转换为if-else。反之,不成立。
  2. 我们写分支结构时,当发现既可以使用switch-case,(同时,switch中表达式的取值情况不太多), 又可以使用if-else时,我们优先选择使用switch-case。原因:switch-case执行效率稍高

http://www.ppmy.cn/news/424607.html

相关文章

switch 计算器?!

(用switch语句编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式: 操作数1 运算符op 操作数2 计算表达式的值,指定的算术运算符为加()、减(-)、乘(*)、除&am…

switch计算器

#include <stdio.h> int main() { int a, b,c,d; printf("1.加法\n2.减法\n3.乘法\n4.除法\n0.退出\n请输入你的选择&#xff1a;"); scanf_s("%d",&c); switch (c) { case(1): printf("你选择的是加法&#xff0c;请输…

阿里云国际站:阿里云服务器安全性如何?有哪些安全措施和防护机制?

阿里云国际站&#xff1a;阿里云服务器安全性如何&#xff1f;有哪些安全措施和防护机制&#xff1f;   阿里云服务器安全性简介   作为全球领先的云计算服务提供商&#xff0c;阿里云始终注重保障用户数据安全。在面对各种网络攻击和安全威胁时&#xff0c;阿里云积极构建…

2023年最新React面试题

以下是一些常见的React面试题&#xff0c;包括代码详解。这些问题涵盖了React的基础知识和常见的开发场景。请注意&#xff0c;这些问题的答案可能有多种方式&#xff0c;下面给出的是其中一种解决方案。 1. 什么是React&#xff1f; React是一个用于构建用户界面的JavaScrip…

基础设施运维测试

选择题 1、 如下常用windows命令中&#xff0c;用来检测TCP/IP网络连通性的是&#xff08;D) A、 lpconfig B、ARP C、tracert D、ping 2、 可以将局域网按入Internet 的设备是&#xff08;A&#xff09; A、路由器 B、集线器 C、交换机 D、调制解调器 3、 下面不是IDC机房的…

组合逻辑电路设计---多路选择器

目录 1、多路选择器简介 2、硬件设计 3、实验任务 4、程序设计 4.1、模块设计 4.2、绘制波形图 4.3、编写代码 &#xff08;1&#xff09;assign 中条件运算符&#xff08;三目运算符&#xff09;实现方法&#xff1a; &#xff08;2&#xff09;always 语句块中使用 …

mac电脑管理android手机通讯录,Mac中怎么管理我们的通讯录

在这个信息发达的时代&#xff0c;我们每个人都与越来越多的人有着各种各样的关系&#xff0c;因而通讯录也变得越来越庞大。如何管理我们的通讯录&#xff0c;也成为一件很重要的事。MAC用户可以通过MAC管理自己的通讯录哦&#xff0c;现在就让小编来教您怎么做吧。 几个敲键点…

导出来的手机数据无法使用快速恢复

刚买了一个手机&#xff0c;自然是有些兴奋的&#xff0c;所有的注意力也差不多全部放到了手机上&#xff0c;没办法了&#xff0c;对于一个三年多都没换手机&#xff0c;平时对于数码产品还非常感兴趣的人来说&#xff0c;若不是因为没有钱&#xff0c;手机照片恢复软件又咋会…