【分支控制】(switch) 详解

news2025/1/5 11:21:16

switch分支结构

  • 基本语法
 switch (表达式){
            case 常量1: //当...
                语句块1;
                break; //跳出switch
            case 常量2:
                语句块2;
                break;
            ...
            case 常量n;
                语句块n;
                break;
            default:
                default语句块;
                break;
        }
  1. switch 关键字, 表示switch分支
  2. 表达式, 对应一个值
  3. case 常量1: 当表达式的值等于常量1, 就执行 语句块1
  4. break: 表示退出switch
  5. 如果和case常量1匹配, 就执行语句块1, 如果没有匹配, 就继续匹配case 常量2
  6. 如果一个都没有匹配上, 执行default

switch分支结构

  • 流程图
    在这里插入图片描述
  • 快速入门

案例:

  1. 请写一个程序, 该程序可以接收一个字符, 比如: a, b, c, d, e, f, g
  2. a表示星期一, b表示星期2…
  3. 根据用户的输入显示相应的信息, 要求使用switch语句
    Scanner input = new Scanner(System.in);
        System.out.println("请输入一个字符(a-g)");
        char c1 = input.next().charAt(0); //
        //在java中, 只要是有值返回, 就是一个表达式
        switch(c1) {
            case 'a':
                System.out.println("今天星期一");
                break;
            case 'b':
                System.out.println("今天星期二");
                break;
            case 'c':
                System.out.println("今天星期三");
                break;
//                ...
            default:
                System.out.println("输入有误");
                break;
        }

请添加图片描述

switch注意事项和细节讨论


  1. 表达式数据类型, 应和case 后的常量类型一致,或着是可以 自动转成 可以相互比较的类型, 比如输入的是字符, 而常量是int
  2. switch(表达式)中表达式的返回值必须是: (byte, short,int,char,enum,String)
  double c = 1.1;
        switch (c){ //错误
            case 1.1 : //错误
                System.out.println("ko");
                break;
        }
  1. case子句中的值必须是常量, 而不能是变量
  2. default子句是可选的, 当没有匹配的case时, 执行default
  3. break语句用来在执行完一个case分支后使程序跳出switch语句块; 如果没有写break, 程序会顺利执行到switch结尾.

请添加图片描述

案例练习


  1. 使用 switch 把小写类型的 char型转为大写(键盘输入)。只转换 a, b,c, d, e.其它的输出"other
//        创建Scanner对象
        Scanner input = new Scanner(System.in);
        System.out.println("请输入 a~e:");
        char c1 = input.next().charAt(0);
        switch (c1) {
            case 'a':
                c1 = 'A';
                System.out.println(c1);
                break;
            case 'b':

                c1 = 'B';
                System.out.println(c1);
                break;
                case 'c':
                    c1 = 'C';
                    System.out.println(c1);
                    break;
            case 'd':
                c1 = 'D';
                System.out.println(c1);
                break;
            case 'e':
                c1 = 'E';
                System.out.println(c1);
                break;
            default:
                System.out.println("other");
                break;
        }

小伙伴做剩下的题吧

  1. 对学生成绩大于60分的,输出"合格”。低于60分的,输出"不合格”。(注:输入。的成绩不能大于100),提示 成绩/60

  2. 根据用于指定月份,打印该月份所属的季节。3,4,5 春季 6,7,8 夏季 9,10,11秋季 12,1,2 冬季[练习,提示 使用穿透 ]


请添加图片描述

switch和if的比较


  1. 如果判断的具体数值不多, 而且符合byte, short, int, char, enum[枚举], String这6种类型, 虽然两个语句都可以使用, 建议使用switch语句

  2. 其他情况: 对区间判断, 对结果为boolean类型判断, 使用if, if的范围更广

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1709409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FreeRTOS_信号量_学习笔记

信号量的特性 消息队列用于传输多个数据,但是有时候我们只需要传递状态,这个状态值需要用一个数值表示。套用队列笔记中的流水线例子,可以理解为流水线上工件的数量。 信号:起通知作用 量:还可以用来表示资源的数量 当…

232转Profinet网关接扫码枪与PLC通讯在物流分拣线上的应用

一、背景 随着生活节奏的加快,网络购物需求非常大,从而造成快递站需要快速提取快递信息已达到快速出站的效果,这就用到了扫码枪,扫码枪作为采集设备,能够迅速准确地读取货物信息。并将数据传输至PLC控制器&#xff0c…

antd design 自定义表头

<template><a-card :bordered"false"><div class"contentWrap"><!-- 查询区域 --><div class"table-page-search-wrapper"><a-form layout"inline" keyup.enter.native"searchQuery">&…

【InternLM实战营第二期笔记】03:“茴香豆“,搭建你的 RAG 智能助理(未完成)

文章目录 笔记-RAG课程结构为什么要用 RAG&#xff1f;定义工作原理向量数据库RAG 工作流程发展历程常见优化RAG vs 微调LLM 优化方法比较RAG的评价总结 笔记-茴香豆什么是茴香豆茴香豆实战 笔记-RAG 课程结构 为什么要用 RAG&#xff1f; 新增知识&#xff0c;尤其是高频变动…

利用开源工具创建WEBGIS应用

在本文中&#xff0c;我们将大致说明利用开源工具如何与服务器交互以构建交互式或动态 Web GIS。 WebGIS 应用程序已成为展示地理数据的重要模式。我们现在拥有允许用户交互的机制&#xff0c;以便用户可以选择数据&#xff0c;甚至修改或添加新数据。 什么是WEBGIS? 通过网络…

三十、openlayers官网示例解析Double click, Drag and Zoom——第二次点击鼠标拖拽缩放地图效果、取消地图双击放大事件

这篇展示了如何在地图上添加第二次按下鼠标移动鼠标实现拖拽缩放地图效果。 官网demo地址&#xff1a; Double click, Drag and Zoom 官网介绍文字的翻译如下&#xff1a; 示例比较简单&#xff0c;直接贴代码&#xff1a; const map new Map({//添加第二次点击拖拽缩放地图i…

Meta 推出新型多模态 AI 模型“变色龙”(Chameleon),挑战 GPT-4o,引领多模态革命

在人工智能领域&#xff0c;Meta 近日发布了一款名为“变色龙”&#xff08;Chameleon&#xff09;的新型多模态 AI 模型&#xff0c;旨在挑战 OpenAI 的 GPT-4o&#xff0c;并刷新了当前的技术标准&#xff08;SOTA&#xff09;。这款拥有 34B 参数的模型通过 10 万亿 token 的…

探索机器人智能设备:开启智慧生活新篇章

机器人智能设备作为科技创新的代表&#xff0c;正以其独特的魅力吸引着越来越多的关注。它们不仅具备高度的智能化和自主化能力&#xff0c;还能在各种场景下发挥出强大的功能。 机器人智能设备的张总说&#xff1a;在智能家居领域&#xff0c;机器人智能设备可以帮助我们实现家…

骨折分类数据集1129张10类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;1129 分类类别数&#xff1a;10 类别名称:["avulsion_fracture",…

鸿蒙ArkUI-X跨语言调用说明:【平台桥接开发指南(Android)BridgePlugin】

BridgePlugin (平台桥接) 本模块提供ArkUI端和Android平台端消息通信的功能&#xff0c;包括数据传输、方法调用和事件调用。需配套ArkUI端API使用&#xff0c;ArkUI侧具体用法请参考[Bridge API]。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a; gitee.com/li-…

微软Copilot+ PC:Phi-Silica

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调重新阅读。而最新科技&#xff08;Mamba&#xff0c;xLSTM,KAN&#xff09;则提供了大模…

webserver服务器从零搭建到上线(九)|⭐️EventLoop类(一)——详解成员变量、简述成员方法

在本节中&#xff0c;我们一起来仔细探讨一下EpollPoller类。该类可以说是muduo库中最最核心的类了&#xff0c;一定要搞懂&#xff01; 文章目录 私有成员using ChannelList std::vector<Channel*>looping_、quit_threadId_pollReturnTime_、poller_wakeup_fd、wakeupC…

机器学习-1-了解机器学习machine learning的基本概念

参考机器学习算法 - 一文搞懂ML(机器学习) 参考机器学习算法 - 一文搞懂SL(监督学习) 参考机器学习算法 - 一文搞懂UL(无监督学习) 1 机器学习 1.1 机器学习的本质 基本思路:无论使用什么样的算法和数据,机器学习的基本思路都可以归结为以下三个核心步骤。 (1)问题…

Nginx的集群负载均衡(nginx构建tomcat集群案例)

一 .Nginx的集群负载均衡 1.nginx 集群负载均衡示意图 2.四层负载均衡和7层负载均衡 LVS 四层负载均衡(常用); Haproxy四层负载均衡;Nginx 四层负载均衡; Haproxy七层负载均衡;Nginx 七层负载均衡(常用); 3.nginx构建tomcat集群 步骤1:安装tomcat 步骤2:nginx配置tom…

图论(五)-最短路

一、Bellman-Ford算法 算法思想&#xff1a;通过 n 次循环&#xff0c;每次循环都遍历每条边&#xff08;共 m 条边&#xff09;&#xff0c;进而更新节点的距离&#xff0c;每次循环至少可以确定一个点的最短路&#xff0c;循环 n 次&#xff0c;求出 n 个点的最短路 时间复杂…

git:Unable to negotiate问题解决

场景说明&#xff1a; 安装了Gitblit(自架的代码仓库服务)发现部分电脑无法推代码&#xff0c;报错误如下&#xff1a; Unable to negotiate with **** port 22: no matching host key type found. Their offer: ssh-rsa 并排队了账户权限问题。 解决方案&#xff1a; 1.打开问…

HttpClient cookie爬虫记录

记录一次java语言使用httpclient爬取网站接口数据的经历 需要用到的依赖&#xff1a; httpclient和httpcore是封装了http请求的工具类 jsoup可以将返回的网页html找到你需要的xml节点&#xff0c;很方便 <dependency><groupId>org.apache.httpcomponents</gr…

Spring系列-01-IOC的依赖查找和依赖注入

IOC基础 IOC发展 初始场景, 不使用IOC如何实现 假定现在有一下需求, 开始使用的数据源是MySQL, 后续数据源变动为Oracle, 那么我们的代码就需要改动 每次切数据源都需要改动, 那么进行优化 静态工厂解决强依赖 在01版本基础上, 使用静态工厂对多个数据源进行了封装, 要哪…

Unity UGUI系统概念分析

文章目录 前言一、UGUI运行原理二、UGUI组件分析1、Canvas组件2、Canvas Scaler3、Graphic Raycaster组件4、EventTrigger组件5、Image 和 RawImage组件5、Mask 和 RectMask2D组件6、Button、Sider、DropDown等组件 三、UGUI源码分析三、UGUI优化四、UI框架设计五、UI适配总结 …

三十一、openlayers官网示例Draw Features解析——在地图上自定义绘制点、线、多边形、圆形并获取图形数据

官网demo地址&#xff1a; Draw Features 先初始化地图&#xff0c;准备一个空的矢量图层&#xff0c;用于显示绘制的图形。 initLayers() {const raster new TileLayer({source: new XYZ({url: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/…