判断和循环 - switch语句和练习

news2024/11/28 16:33:50

switch语句格式

switch(表达式) {
    case1:
        语句体1;
        break;
    case2:
        语句体2;
        break;
        ...
    default:
        语句体n+1;
        break;
}
  • 执行流程:
  1. 首先计算表达式的值。
  2. 依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会解释。
  3. 如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束整个switch语句。

请添加图片描述
请添加图片描述

代码演示

public class SwitchDemo1 {
    public static void main(String[] args) {
        //兰州拉面、武汉热干面、北京炸酱面、陕西油泼面

        //1.定义变量记录我心里想吃的面


        //2.拿着这个面利用switch跟四种面条匹配
        String noodles = "海鲜龙虾面";
        switch (noodles) {
            case "兰州拉面":
                System.out.println("吃兰州拉面");
                break;
            case "武汉热干面":
                System.out.println("吃武汉热干面");
                break;
            case "北京炸酱面":
                System.out.println("吃北京炸酱面");
                break;
            case "陕西油泼面":
                System.out.println("吃陕西油泼面");
                break;
            default:
                System.out.println("吃方便面");
                break;

        }
    }
}

练习

运动计划

需求:键盘录入星期数,显示今天的减肥活动。

周一:跑步

周二:游泳

周三:慢走

周四:动感单车

周五:拳击

周六:爬山

周日:好好吃一顿

代码实现

import java.util.Scanner;

public class Test9 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入今天是星期几");
        String day = sc.next();

        switch (day) {
            case "周一":
                System.out.println("跑步");
                break;
            case "周二":
                System.out.println("游泳");
                break;
            case "周三":
                System.out.println("慢走");
                break;
            case "周四":
                System.out.println("动感单车");
                break;
            case "周五":
                System.out.println("拳击");
                break;
            case "周六":
                System.out.println("爬山");
                break;
            case "周日":
                System.out.println("好好吃一顿");
                break;
            default:
                System.out.println("狠狠地颓废一周");
                break}

    }
}

import java.util.Scanner;

public class Test9 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入今天是星期几");
        int week = sc.nextInt();

        switch (day) {
            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;
            default:
                System.out.println("狠狠地颓废一周");
                break;
        }

    }
}

switch的扩展知识点和练习

1.default的位置和省略
/*
    default的位置和省略

    1.位置:default不一定是写在最下面的,我们也可以写在任意位置。只是习惯写在最下面
    2.省略:default可以省略,语法不会有问题,但是不建议省略。
 */
public class SwitchDemo2 {
    public static void main(String[] args) {
        int number  = 100;
        switch (number) {
            case 1:
                System.out.println("number的值为1");
                break;
            case 10:
                System.out.println("number的值为10");
                break;
            case 20:
                System.out.println("number的值为20");
                break;
            /*default:
                System.out.println("number的值不是1,10或者20");
                break;*/
        }

    }
}
2.case穿透
/*
    case穿透:break省略了导致的。
    执行流程:
    首先还是会用小括号中表达式中的值与下面每一个case进行匹配;
    如果匹配上了,就会执行对应的语句体,如果此时发现了break,那么结束整个switch语句。
    如果没有发现break,那么程序会执行下一个语句体。一直直到遇到下一个break或者右大括号为止。
 */
public class SwitchDemo3 {
    public static void main(String[] args) {
        int number = 10;
        switch (number) {
            case 1:
                System.out.println("number的值为1");
                break;
            case 10:
                System.out.println("number的值为10");
                //break;
            case 20:
                System.out.println("number的值为20");
                break;
            default:
                System.out.println("number的值不是1,10或者20");
                //break;
        }
    }
}

output

请添加图片描述

3.switch函数在JDK12之后的新特性。
//1.简化格式
		int number = 1;
        switch (number) {
            case 1 -> {
                System.out.println("一");
            }
            case 2 -> {
                System.out.println("二");
            }
            case 3 -> {
                System.out.println("三");
            }
            default -> {
                System.out.println("没有这种选项");
            }
        }
//2.如果{}中只有一行代码,可以省略大括号。
		int number = 1;
        switch (number) {
            case 1 -> System.out.println("一");
            case 2 -> System.out.println("二");
            case 3 -> System.out.println("三");
            default -> System.out.println("没有这种选项");
        }

其实,还可以对switch赋值变量去接收switch的结果,稍微有点难,在之后学完方法再来讨论。

/*
    switch新特性
        JDK12
 */

public class SwitchDemo4 {
    public static void main(String[] args) {
        //需求:
        // 1 2 3 一 二 三

        /*int number = 1;
        switch (number) {
            case 1:
                System.out.println("一");
                break;
            case 2:
                System.out.println("二");
                break;
            case 3:
                System.out.println("三");
                break;
            default:
                System.out.println("没有这种选项");
                break;
        }*/


        /*int number = 1;
        switch (number) {
            case 1 -> {
                System.out.println("一");
            }
            case 2 -> {
                System.out.println("二");
            }
            case 3 -> {
                System.out.println("三");
            }
            default -> {
                System.out.println("没有这种选项");
            }
        }*/

        int number = 1;
        switch (number) {
            case 1 -> System.out.println("一");
            case 2 -> System.out.println("二");
            case 3 -> System.out.println("三");
            default -> System.out.println("没有这种选项");
        }

    }
}
4.switchif第三种格式各自的使用场景

练习

休息日和工作日

需求:键盘录入星期数,输出工作日、休息日。

(1-5)工作日,(6-7)休息日。

switch语句写法

import java.util.Scanner;

public class Test10 {
    public static void main(String[] args) {
        /*
        需求:键盘录入星期数,输出工作日、休息日。
        (1-5) 工作日,(6-7)休息日。
         */

        //分析:
        //1.键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入星期数");
        int day = sc.nextInt();

        //2.用switch语句进行选择
        switch (day) {
            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;
            default:
                System.out.println("再想想?");
                break;
        }

语句重复了,可以用case穿透简化代码!

//2.用switch语句进行选择
        switch (day) {
            case 1: 
            case 2: 
            case 3: 
            case 4: 
            case 5: 
                System.out.println("工作日");
                break;
            case 6: 
            case 7:
                System.out.println("休息日");
                break;
            default:
                System.out.println("再想想?");
                break;
        }

还可以进一步再简化

//2.用switch语句进行选择
        switch (day) {
            case 1,2,3,4,5: 
                System.out.println("工作日");
                break;
            case 6,7: 
                System.out.println("休息日");
                break;
            default:
                System.out.println("再想想?");
                break;
        }

emm,其实还能简化(利用JDK12新特性

//2.用switch语句进行选择
        switch (day) {
            case 1,2,3,4,5 -> System.out.println("工作日");
            case 6,7 -> System.out.println("休息日");
            default -> System.out.println("再想想?");
        }
机票业务
import java.util.Scanner;

public class Test11 {
    public static void main(String[] args) {
        /*
        在实际开发中,如果我们需要在多种情况下选择其中一个,就可以使用switch语句
        当我们拨打了某些服务电话时,一般都会有按键选择。
        假设我们现在拨打了一个机票预定电话。
        电话中语音提示:
        1机票查询
        2机票预定
        3机票改签
        4退出服务
        其他按键也是退出服务。请使用switch模拟该业务逻辑。
         */

        //分析:
        //1.键盘录入我们的选择
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入数字获取服务");
        int number = sc.nextInt();

        //2.根据选择执行不同的代码逻辑
        switch (number) {
            case 1 -> System.out.println("机票查询");
            case 2 -> System.out.println("机票预定");
            case 3 -> System.out.println("机票改签");
            //case 4 -> System.out.println("退出服务");
            default -> System.out.println("退出服务");
        }
    }
}

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

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

相关文章

vue项目线上页面刷新报404 解决方法

一.修改配置文件 nginx.conf ,并重新加载或重启 我的nginx版本是1.9.9 location / {try_files $uri $uri/ /index.html; }原因: 打包后的dist下只有一个 index.html 文件及一些静态资源,这个是因为Vue是单页应用(SPA),只有一个…

《Python 网络爬虫简易速速上手小册》第6章:Python 爬虫的优化策略(2024 最新版)

文章目录 6.1 提高爬虫的效率6.1.1 重点基础知识讲解6.1.2 重点案例:使用 asyncio 和 aiohttp 实现异步爬虫6.1.3 拓展案例 1:利用 Scrapy 的并发特性6.1.4 拓展案例 2:使用缓存来避免重复请求 6.2 处理大规模数据爬取6.2.1 重点基础知识讲解…

新加坡大带宽服务器优势特点

随着互联网技术的不断进步,大带宽服务器在满足高速数据传输需求方面发挥着越来越重要的作用。新加坡,作为全球互联网基础设施的重要枢纽,其大带宽服务器在全球范围内备受关注。本文将深入探讨新加坡大带宽服务器的优势特点,以及如…

蓝桥杯每日一题----区间dp

前言 暂时没啥好说的,直接进入正题吧 引入 涂色PAINT 读题发现要求的是使一段区间满足要求的最小操作次数,考虑用动态规划去做。 第一步:考虑缩小规模,这里的规模其实就是区间长度,那么dp数组应该可以表示某个区间&…

白话 Transformer 原理-以 BERT 模型为例

白话 Transformer 原理-以 BERT 模型为例 第一部分:引入 1-向量 在数字化时代,数学运算最小单位通常是自然数字,但在 AI 时代,这个最小单元变成了向量,这是数字化时代计算和智能化时代最重要的差别之一。 举个例子:银行在放款前,需要评估一个人的信用度;对于用户而…

解析Python中HTTP代理的常见问题

在Python编程中,HTTP代理是一个经常被提及的概念,尤其在处理网络请求和爬虫时。但与此同时,使用HTTP代理也经常会遇到一些令人头疼的问题。接下来,就让我们一起解析一下Python中使用HTTP代理时常见的那些问题。 1. 代理服务器无响…

06、全文检索 -- Solr -- Solr 全文检索之在图形界面管理 Core 的 Schema(演示对 普通字段、动态字段、拷贝字段 的添加和删除)

目录 Solr 全文检索之管理 Schema使用Web控制台管理Core的Schema3 种 字段解释:Field:普通字段Dynamic Field:动态字段Copy Field:拷贝字段 演示:添加 普通字段( Field )演示:添加 动…

CSS写渐变边框线条

box-sizing: border-box; border-top: 1px solid; border-image: linear-gradient(to right, red, blue) 1;

建筑行业数字化:从设计到运维的全面革新

随着科技的快速发展,数字化技术在各行各业中的应用越来越广泛。建筑行业作为传统产业,也在积极拥抱数字化技术,以提高效率、降低成本并实现可持续发展。本文将主要探讨建筑行业数字化的几个关键领域,包括建筑设计数字化、施工管理…

CDH6.3.2 多 Spark 版本共存

一 部署Spark客户端 1.1 部署spark3客户端 tar -zxvf spark-3.3.1-bin-3.0.0-cdh6.3.2.tgz -C /opt/cloudera/parcels/CDH/lib cd /opt/cloudera/parcels/CDH/lib mv spark-3.3.1-bin-3.0.0-cdh6.3.2/ spark3将 CDH 集群的 spark-env.sh 复制到 /opt/cloudera/parcels/CDH/li…

《Python 网络爬虫简易速速上手小册》第3章:Python 网络爬虫的设计(2024 最新版)

文章目录 3.1 设计高效的爬取策略3.1.1 重点基础知识讲解3.1.2 重点案例:使用 Scrapy 框架进行并发爬取3.1.3 拓展案例 1:使用 Requests 和 gevent 进行异步请求3.1.4 拓展案例 2:利用缓存机制避免重复请求 3.2 管理爬虫的请求频率3.2.1 重点…

【AIGC核心技术剖析】AI生成音乐:MAGNeT一种直接操作多个音频令牌流的掩码生成序列建模方法

MAGNeT是一种直接操作多个音频令牌流的掩码生成序列建模方法。与先前的工作不同,MAGNeT由一个单阶段、非自回归的变压器组成。在训练期间,论文使用掩码调度器预测从掩码令牌中获得的跨度,而在推断期间,论文通过多个解码步骤逐渐构…

微信小程序 使用npm包

1. 微信小程序 使用npm包 1.1. npm初始化 如果你的小程序项目没有安装过npm包的话,你需要先初始化npm npm init1.2. 安装npm包 这里以vant-weapp(小程序UI组件库)为例: npm i vant-weapp -S --production1.3. npm包构建 1.3.1. 点击微信开发者工具右…

怎样理解Vue单向数据流

在前端开发中,数据流是一个非常重要的概念。Vue.js作为一种流行的前端框架,采用了单向数据流的架构,旨在简化开发过程并提高应用的可维护性。本文将探讨Vue单向数据流的含义以及它的使用方法。 什么是单向数据流? 在Vue中&#…

靶机实战bwapp亲测xxe漏洞攻击及自动化XXE注射工具分析利用

靶机实战bwapp亲测xxe漏洞攻击及自动化XXE注射工具分析利用。 1|0介绍 xxe漏洞主要针对webservice危险的引用的外部实体并且未对外部实体进行敏感字符的过滤,从而可以造成命令执行,目录遍历等.首先存在漏洞的web服务一定是存在xml传输数据的,可以在http头的content-type中查…

动态颗粒背景,适合VUE、HTML前端显示

动态颗粒背景&#xff0c;适合做背景使用&#xff0c;VUE、HTML前端显示直接看效果 废话不多说直接上代码&#xff1b; 一、html 代码部分 <template><div id"login"><div class"container"><div class"login-form"&g…

golang开发window环境搭建

1.本人开发环境&#xff1a;window10,idea2020.1.3 2.Go语言环境版本1.5.1 2.1. go语言插件 下载地址 csdn - 安全中心 2.2下载安装 3.idea配置go环境 4.创建go项目 、5.运行

第二届 N1CTF Junior WEB方向 部分题解WP

zako 题目描述&#xff1a;很简单的rce哦 启动环境&#xff0c;源码直接给了。 execute.sh #!/bin/bashreject(){echo ${1}exit 1 }XXXCMD$1awk -v str"${XXXCMD}" \ BEGIN{deny";&$(){}[]!#$%^&*-";for(i 1; i < length(str); i){char su…

Unity引擎学习笔记之【混合动画操作】

混合动画Hybrid Animation Unity中的Blend Tree是一种动画混合技术&#xff0c;它允许开发者通过添加多个动画片段&#xff08;例如奔跑、行走、跳跃等&#xff09;来创建复杂的角色动画。Blend Tree允许在不同的状态下平滑地过渡并混合不同的动画。例如&#xff0c;在奔跑和行…

PyTorch 2.2 中文官方教程(九)

在生产环境中部署 PyTorch 模型 通过 Flask 在 Python 中部署 PyTorch 的 REST API 原文&#xff1a;pytorch.org/tutorials/intermediate/flask_rest_api_tutorial.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 注意 点击这里下载完整的示例代码 作者&#…