Java入门基础学习笔记22——程序流程控制

程序流程控制:控制程序的执行顺序。

程序有哪些执行顺序?

顺序、分支和循环。

分支结构:

if、switch

循环:

for、while、do-while

顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

if分支:

根据条件(真和假)来决定执行某段代码。

说明:单分支、双分支、多分支。

package cn.ensource.branch;

import java.util.Scanner;

public class IfDemo1 {
    public static void main(String[] args) {
        // 目标:需要同学们掌握If分支的三种形式的用法和执行流程
        // 需求:测量用户体温、发现体温高于37度就报警
        double t = 38.9;
        if (t > 37) {
            System.out.println("这个人温度异常!");
        }

        // 需求:发红包、你的钱包余额是99元,现在要发出90元。
        // 如果钱够,触发发红包的动作,如果钱不够,则提示余额不足:
        double money = 99;
        if (money >= 90) {
            System.out.println("发红包成功了!");
        }else {
            System.out.println("余额不足!");
        }

        // 需求3: 某个公司有一个绩效系统,根据员工的打分输出对应的绩效级别。
        // [0-60] D [60-80] C [80-90] B [90-100] A
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入员工积分:");
        int score = sc.nextInt();

        if (score >= 0 && score < 60) {
            System.out.println("D");
        }else if(score >= 60 && score < 80) {
            System.out.println("C");
        }else if(score >= 80 && score < 90) {
            System.out.println("B");
        }else if(score >= 90 && score <= 100) {
            System.out.println("A");
        }else {
            System.out.println("您输入的积分有问题!");
        }
    }
}

如果if语句的{}中只有一行代码的情况,{}可以省略不写(但不推荐省略)。

import java.util.Scanner;


public class Main {

    public static void main(String[] args) {
        System.out.println("start");

        Scanner sc = new Scanner(System.in);
        System.out.println("Please input a number(1-7):");

        int week = sc.nextInt();

        if(week == 1) {
            System.out.println("Monday");
        } else if(week == 2) {
            System.out.println("Tuesday");
        } else if(week == 3) {
            System.out.println("Wednesday");
        } else if(week == 4) {
            System.out.println("Thursday");
        } else if(week == 5) {
            System.out.println("Friday");
        } else if (week == 6) {
            System.out.println("Saturday");
        } else {
            System.out.println("Sunday");
        }

        System.out.println("End");
    }
}

switch分支:

是通过比较值来决定执行哪条分支。

switch分支的执行流程:

1)先执行表达式的值,再拿着这个值去与case后的值进行匹配;

2)与哪个case后面的值匹配值为true,就执行哪个case块的代码,遇到break,就跳出switch分支。

3)如果全部case后的值与之匹配都是false,则执行default块的代码。

案例:

package cn.ensource.branch;

import java.util.Scanner;

public class SwitchDemo2 {
    public static void main(String[] args) {
        //switch语句
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入星期信息(示例:周一):");
        String week = sc.nextLine();

        switch (week) {
            case "周一":
                System.out.println("埋头苦干,解决bug。");
                break;
            case "周二":
                System.out.println("请大牛程序员帮忙。");
                break;
            case "周三":
                System.out.println("今晚啤酒、龙虾、小烧烤。");
                break;
            case "周四":
                System.out.println("主动帮助新来的女程序员解决bug。");
                break;
            case "周五":
                System.out.println("今晚吃鸡。");
                break;
            case "周六":
                System.out.println("与王婆介绍的小芳相亲。");
                break;
            case "周日":
                System.out.println("郁郁寡欢,准备上班。");
                break;
            default:
                System.out.println("您输入的星期信息不对!");
        }
    }
}

if、switch的比较,以及各自适合的应用场景?

if语句功能上远远强于switch。swith语句能搞定的事情,if都可以搞定。

如果当前的条件是区间的话,应该使用if分支结构。

当条件是与一个一个值比较的时候,switch分支是更合适的,格式良好、性能更好、代码优雅。

快速定位某个语句。

switch语句使用时的注意事项:

1)表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持Double、float、long。

long的值很大,分支很大,就没有意义了。

double类型在运算的时候,可能是不精确的。底层的运算机制。

2)case给出的值不允许重复,且只能是字面量,不能是变量。

3)正常使用switch语句的时候,不要忘记写break,否则会出现穿透现象。

忘记写break语句,程序继续往下执行。

Switch穿透性在某些情况下可以简化代码。

当存在多个case分支的代码相同的时候,可以把相同的代码放到一个case块中,其他的case块都通过穿透性透到该case执行代码即可,这样可以简化代码。

这样,很明显,代码简化了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

​​​【收录 Hello 算法】第 6 章 哈希表

目录 第 6 章 哈希表 本章内容 第 6 章 哈希表 Abstract 在计算机世界中&#xff0c;哈希表如同一位聪慧的图书管理员。 他知道如何计算索书号&#xff0c;从而可以快速找到目标图书。 本章内容 6.1 哈希表6.2 哈希冲突6.3 哈希算法6.4 小结

文本分类的深度注意图扩散网络 笔记

1 Title Deep Attention Diffusion Graph Neural Networks for Text Classification&#xff08;Yonghao Liu、Renchu Guan、Fausto Giunchiglia、Yanchun Liang、Xiaoyue Feng&#xff09;【EMnlp 2021】 2 Conclusion Text classification is a fundamental task with broad…

20240513,常用算法(查找,排序,拷贝替换)

做着一些和考试无关的事情 常用查找算法——续 FIND_IF find_if //按条件查找元素&#xff0c;返回迭代器POS / END()find_if(beg,end,_Fred) _Fred函数或谓词&#xff08;返回BOOL类型的仿函数&#xff09; #include<iostream> #include<string> #includ…

目标检测——YOLOv9算法解读

论文&#xff1a;YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information (2024.2.21) 作者&#xff1a;Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao 链接&#xff1a;https://arxiv.org/abs/2402.13616 代码&#xff1a;https://github.com/W…

kubernetes集群svc的代理模式-iptables修改为ipvs

一、概述\ 我们都知道&#xff0c;k8s集群的外部网络分发&#xff0c;借助kube-proxy组件来完成&#xff1b; 问题&#xff1a;我们为什么要将代理模式修改为ipvs而不继续使用iptables呐&#xff1f; 1&#xff0c;iptables底层使用四表五链完成网络代理&#xff0c;效率比较低…

HackCar – 汽车系统的攻击和防御游乐场

现代汽车配备的微控制器使用控制器局域网 (CAN) 来执行安全和豪华功能。 然而&#xff0c;由于CAN网络缺乏速度控制等线控系统的安全性&#xff0c;因此可能会通过消息注入攻击来 劫持车辆&#xff0c;从而造成生命危险。 尽管研究人员努力提出入侵检测、加密和身份验证等解…

研究幽灵漏洞及其变种(包括但不限于V1-V5)的攻击原理和基于Github的尝试

一、研究幽灵漏洞及其变种(包括但不限于V1-V5)的攻击原理 1.1 基本漏洞原理(V1) 幽灵漏洞的基本原理是由于glibc库中的gethostbyname()函数在处理域名解析时,调用了__nss_hostname_digits_dots()函数存在缓冲区溢出漏洞。 具体来说,__nss_hostname_digits_dots()使用一个固定…

牛客网刷题 | BC82 乘法表

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 描述 输出九九乘法表&am…

[GWCTF 2019]re3

int mprotect(void *addr, size_t len, int prot);实现内存区域的动态权限控制: addr&#xff1a;要修改保护权限的内存区域的起始地址。len&#xff1a;要修改保护权限的内存区域的长度&#xff08;以字节为单位&#xff09;。prot&#xff1a;要设置的新的保护权限&#xff…

宠物管理系统带万字文档

文章目录 宠物管理系统一、项目演示二、项目介绍三、19000字论文参考四、部分功能截图五、部分代码展示六、底部获取项目源码和万字论文参考&#xff08;9.9&#xffe5;带走&#xff09; 宠物管理系统 一、项目演示 宠物管理系统 二、项目介绍 基于springbootvue的前后端分离…

CentOs搭建Kubernetes集群

kubeadm minikube 还是太“迷你”了&#xff0c;方便的同时也隐藏了很多细节&#xff0c;离真正生产环境里的计算集群有一些差距&#xff0c;毕竟许多需求、任务只有在多节点的大集群里才能够遇到&#xff0c;相比起来&#xff0c;minikube 真的只能算是一个“玩具”。 Kuber…

如何利用甘特图来提高资源的是使用效率?

在项目管理中&#xff0c;甘特图是一种常用的工具&#xff0c;用于规划和跟踪项目进度。它通过条形图的形式展示项目的时间表和任务依赖关系&#xff0c;帮助项目经理和团队成员清晰地了解项目的时间线和进度。通过合理利用甘特图&#xff0c;可以显著提高资源的使用效率&#…

【C++】学习笔记——继承_1

文章目录 十一、模板进阶5. 模板的优缺点 十二、继承1. 继承的概念及定义2. 基类和派生类对象赋值转换3. 继承中的作用域4. 派生类的默认成员函数 未完待续 十一、模板进阶 5. 模板的优缺点 优点&#xff1a; 模板复用了代码&#xff0c;节省资源&#xff0c;更快的迭代开发&a…

网络安全快速入门(十二) linux的目录结构

我们前面已经了解了基础命令&#xff0c;今天我们来讲讲linux中的目录结构&#xff0c;我们在了解linux的目录结构之前&#xff0c;我们先与Windows做一个对比 12.1linux和windows的目录结构对比 在之前认识liunx的章节中&#xff0c;我们已经简单说明了linux和window的目录结构…

一文入门DNS

概述 DNS是一个缩写&#xff0c;可以代表Domain Name System&#xff0c;域名系统&#xff0c;是互联网的一项基础服务。也可以代表Domain Name Server&#xff0c;域名服务器&#xff0c;是进行域名和与之相对应的IP地址相互转换的服务器。DNS协议则是用来将域名转换为IP地址…

blender cell fracture制作破碎效果,将一个模型破碎成多个模型

效果&#xff1a; 1.打开编辑-》偏好设置。搜索cell&#xff0c;勾选上如下图所示的&#xff0c;然后点击左下角菜单里的保存设置。 2.选中需要破碎的物体&#xff0c;按快捷键f3&#xff08;快速搜索插件&#xff09;&#xff0c;搜索cell fracture。 3.调整自己需要的参数配置…

机器学习之sklearn基础教程:新手入门指南

引言 在机器学习领域&#xff0c;sklearn&#xff08;Scikit-learn&#xff09;是一个广受欢迎的开源库&#xff0c;它为各种常见的机器学习算法提供了高效的实现。对于初学者来说&#xff0c;sklearn 提供了一个简单且易于上手的工具&#xff0c;可以用来实现分类、回归、聚类…

git使用及github

文章目录 操作命令基本组成框架在开发中git分支的重要性 github的使用将本地仓库关联到远程仓库将远程仓库关联到本地和拉取指定分支、切换远程分支提交本地仓库到远程仓库修改分支名称 保存当前工作切换分支将别的分支修改转移到自己的分支远程删除分支后本地git branch -a依然…

MongoDB事务的理解和思考

3.2版本开始引入Read Concern&#xff0c;解决了脏读&#xff0c;支持Read Commit 3.6版本引入Session&#xff0c;支持多个请求共享上下文&#xff0c;为后续的事务支持做准备 4.0支持多行事务&#xff0c;但4.0的事务只是个过渡的版本 4.2开始支持多文档事务 1. Mongo的架…

具备教学意义的实操(用栈实现队列)

具备教学意义的实操&#xff08;用队列实现栈&#xff09;-CSDN博客https://blog.csdn.net/Jason_from_China/article/details/138729955 具备教学意义的实操&#xff08;用栈实现队列&#xff09; 题目 232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09; ​ 逻辑​​…