【分支控制(if-else判断)】单分支-双分支-多分支-嵌套分支

news2024/11/19 13:18:53

程序流程控制

在程序中, 程序运行的流程控制决定程序是如何执行的, 是我们必须掌握的, 主要有三大流程控制语句.

  1. 顺序控制 (简单)
  2. 分支控制 (判断)
  3. 循环控制 (循环)

请添加图片描述

一. 顺序控制

  • 顺序控制介绍

    程序从上到下逐行地执行, 中间没有任何判断和跳转.

  • 顺序控制举例和注意事项

    Java中定义变量时采用合法的 向前引用 如:

public class Test {
    int num1 = 12;
    int num2 = num1 + 2;
}

错误形式:

public class Test {
    int num2 = num1 + 2;  //错误
    int num1 = 12;
}

请添加图片描述

二. 分支控制 if-else

  • 分支控制 if-else 介绍

让程序有选择的执行, 分支控制有三种

二.1. 单分支
 基本语法:
 
 if(条件表达式){
      执行代码块; (可以有多条语句.)
 }

说明:
当条件表达式为true时, 就会执行 { } 的代码. 如果为false, 就不执行. 特别说明, 如果 { } 中只有一条语句, 则可以不用 { }, 小编建议写上 { }, 这样看起来会更清晰.

  • 案例说明
    编写一个程序, 可以输入人的年龄, 如果该同志的年龄大于18岁, 则输出 “您年龄大于18, 要对自己的行为负责, 送入监狱”
    Scanner input = new Scanner(System.in);
        System.out.println("请输入年龄:");
        int age = input.nextInt();
        if (age > 18) {
            System.out.println("您年龄大于18, 要对自己的行为负责, 送入监狱");
        }

        System.out.println("程序继续...");
    }

同样也可以这么写:

    Scanner input = new Scanner(System.in);
        System.out.println("请输入年龄:");
        int age = input.nextInt();
        if (age > 18)System.out.println("您年龄大于18, 要对自己的行为负责, 送入监狱");
        System.out.println("程序继续...");
    }

请添加图片描述

二.2. 双分支

基本语法:

 if(条件表达式){
        	执行代码块1;
 }
 else {
       	  执行代码块2;
 }

说明:
当条件表达式成立, 即执行代码块1. 否则执行代码块2, 如果 { } 中只有一条语句, 则可以不用 { }, 否则, 不能省略

  • 案例说明
    编写一个程序, 可以输入人的年龄, 如果该同志的年龄大于18岁, 则输出 “您年龄大于18, 要对自己的行为负责, 送入监狱”, 否则 , 输出 “你的年龄不大, 这次放过你了”
//        思路分析
//        1. 接收输入的年龄, 定义Scanner对象
//        2. 把年龄保存到一个变量, int age
//        3. 使用 if-else 判断, 输出对应信息
    Scanner input = new Scanner(System.in);
        System.out.println("请输入年龄:");
        int age = input.nextInt();
        if (age > 18) {
            System.out.println("您年龄大于18, 要对自己的行为负责, 送入监狱");
        }
        else {
            System.out.println("你的年龄不大这次放过你");
        }
        System.out.println("程序继续...");
    }

在这里插入图片描述

分支可以嵌套使用

      Scanner input = new Scanner(System.in);
        int x = 7;
        int y = 4;
        if (x > 5) {
            System.out.println("请输入年龄:");
            int age = input.nextInt();
            if (age > 18) {
                if (y > 5) {
                    System.out.println(x + y);
                    System.out.println("Jean_z");
                } else System.out.println("x is" + x);
            } else {
                System.out.println("你的年龄不大这次放过你");
            }
            System.out.println("程序继续...");
        }

请添加图片描述

单分支和双分支练习题

  • 定义两个变量int, 判断二者的和,是否能被3又能被5整除, 打印提示信息
//        思路分析
//        1. 定义两个变量 int num1, num2
//        2. 定义一个变量 int sum = num1 + num2;
//        3. sum % 3, 5 后 等于0 说明可以被整除
//        4. 使用 if - else 来提示对应信息
        int num1 = 10;
        int num2 = 20;
        int sum = num1 + num2;
        if (sum % 3 == 0 && sum % 5 ==0) {
            System.out.println("可以被整除");
        } else {
            System.out.println("和不能被3或5整除");
        }

  • 判断一个年份是否是闰年, 闰年的条件是符合下面二者之一: (1)年份能被4整除, 但不能被100整除; (2)能被400整除
//        思路分析
//        1. 定义 int year 保存年
//        2. 年份能被4整除, 但不能被100整除,
//        => year % 4 == 0 && year % 100 != 0
//        3. 能被400整除 => year % 400 == 0
//        4. 上面的 2 和 3 是或的关系
        int year = 2024;
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            System.out.println(year + "是 闰年");
        }else {
            System.out.println(year + "不是闰年");
        }

请添加图片描述

三.3. 多分支

基本语法:

if (条件表达式1) {
执行代码块1;
}
else if (条件表达式2) {
执行代码块2;
}

else {
执行代码块n;
}

  • 多分支流程图(重要!)

说明:

  1. 当条件表达式1成立时, 及执行代码块1,
  2. 如果条件表达式1不成立时, 才去判断表达式2是否成立
  3. 如果表达式2成立, 就去执行代码块2
  4. 以此类推, 如果所有表达式都不成立
  5. 则执行 else 的代码块, 注意, 只能有一个执行入口

特别说明:
(1) 多分支可以没有else, 如果所有表达式都不成立, 则一个执行入口也没有
(2) 如果有else, 如果所有条件表达式都不成立, 则默认执行else

请添加图片描述

  • 案例演示
    输入保国同志的芝麻信用分:
    如果:
  1. 信用分为100分时, 输出 信用极好
  2. 信用分为(80, 99)时, 输出 信用优秀
  3. 信用分为(60, 80)时, 输出 信用一般
  4. 其他情况, 输出 信用 不及格
  5. 请从键盘输入保国的芝麻信用分, 并加以判断
        Scanner input = new Scanner(System.in);
        System.out.println("输入保国同志的芝麻信用分:");
        int bg = input.nextInt();
        if (bg == 100) {
            System.out.println("信用分极好");
        }else if (bg >= 80 && bg <=99) {
            System.out.println("信用优秀");
        }else if (bg >=60 && bg < 80) {
            System.out.println("信用不及格");
        }else {
            System.out.println("输入不正确");
        }

请添加图片描述

三.4. 嵌套分支

  • 基本介绍
    在一个分支结构中又完整的嵌套了另一个完整的分支结构, 里面的分支的结构称为内层分支外面的分支结构称为外层分支, 尽量不超过三层 (可读性不好)

  • 基本语法

if(){
if(){
//if-else…
}else{
//if-else
}
}

  • 应用案例
    参加歌手比赛,如果初赛成绩大于8.0进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。【可以让学员先练习下】,输入成绩和性别,进行判断和输出信息。

    提示: double score; char gender;
    接收字符: char gender = scanner.next().charAt(0) //先接收到一个字符串,再接收字符串里的第一个字符

//        思路分析
//        1. 创建Scanner对象, 接收用户输入
//        2. 接收成绩保存到 double score
//        3. 使用 if-else
//        4. 如果进入到决赛, 再接收char gender, 使用if-else输出信息
        Scanner input = new Scanner(System.in);
        System.out.println("请输入该歌手成绩:");
        double score = input.nextDouble();
        if (score > 8.0){
            System.out.println("请输入性别:");
            char gender = input.next().charAt(0);
            if (gender == '男' ){
                System.out.println("进入男子组决赛");
            }else if (gender == '女'){
                System.out.println("女子组");
            } else {
                System.out.println("输入不正确, 重新输入");
            }
        } else {
            System.out.println("sorry, 你被淘汰了");
        }

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

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

相关文章

AUS GLOBAL 与 UNICEF 联合国儿童基金会共同帮助叙利亚和土耳其地震受灾居民

2023年2月6日,土耳其东南部和叙利亚发生两次强烈地震和数十次余震,数以千计的儿童和家庭面临危机。 成千上万的房屋被毁,许多家庭被迫流离失所,而在一年中的这个时候,气温经常低于冰点,雪和冻雨很常见。许多学校、医院以及其他医疗和教育设施被地震破坏或摧毁,这对儿童造成了巨…

马斯克开启军备竞赛,xAI筹集60亿美元

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

蓝桥杯—SysTick中断精准定时实现闪烁灯

在嵌入式系统中&#xff0c;SysTick_Handler 是一个中断服务例程&#xff08;Interrupt Service Routine, ISR&#xff09;&#xff0c;用于处理 SysTick 定时器的中断。SysTick 定时器通常用于提供一个周期性的定时中断&#xff0c;可以用来实现延时或者周期性任务。 SysTick…

AWS联网和内容分发之Transit Gateway

将Amazon VPC、AWS账户和本地网络连接到一个网关中。AWS Transit Gateway通过中央枢纽连接Amazon虚拟私有云&#xff08;VPC&#xff09;和本地网络。此连接简化了您的网络&#xff0c;并且结束了复杂的对等关系。Transit Gateway充当高度可扩展的云路由器&#xff0c;每个新的…

HLS入门(Xilinx Vivado 2019.2)——点亮LED仿真

HLS入门——点亮LED仿真 一、HLS简介&#xff08;一&#xff09;什么是HLS&#xff1f;&#xff08;二&#xff09;HLS能做什么&#xff1f;&#xff08;三&#xff09;HLS的使用&#xff08;四&#xff09;HLS的优势&#xff08;五&#xff09;HLS与VHDL/Verilog编程技术的关系…

【机器学习】【深度学习】正则化(Regularization)

概念 正则化&#xff08;Regularization&#xff09;是在机器学习模型中避免过拟合的一种技术。它通过引入一个惩罚项&#xff08;即正则项&#xff09;来限制模型的复杂度&#xff0c;以此来提防模型过度依赖训练数据&#xff0c;捕获数据中的噪音信息而导致过拟合现象。简单…

企业营收分析难?搞定收入认领月底不加班!

在当今日益激烈的市场竞争中&#xff0c;企业的营收分析不仅是衡量经营成果的关键指标&#xff0c;更是指导企业未来发展的重要依据。然而&#xff0c;对于许多企业来说&#xff0c;营收分析的过程往往繁琐且耗时&#xff0c;尤其是月底结账时&#xff0c;大量的数据和复杂的计…

【机器学习300问】95、什么是KNN算法?它和K-means什么关系?

一、KNN算法的定义 KNN&#xff08;K-Nearest Neighbors&#xff09;算法&#xff0c;是一种简单而有效的监督学习方法。它既可以用在分类任务&#xff0c;也可用在回归任务中。KNN算法的核心思想&#xff1a;在特征空间中&#xff0c;如果有一个数据点周围的大多数邻居属于某个…

10. C++异步IO处理库和使用libevent实现高性能服务器

C比较有名的异步IO处理库 libevent 这个主要使用的是epoll。libevthplibuvlibev 我们主要介绍libevent。 libevent重要函数 event_base_new 这个可以对应于epoll_create也就是创建一个实例。还可以初始化libevent所有管理相关的代码。比如说所能用到的队列&#xff0c;栈&a…

OFDM 802.11a的FPGA实现:发射部分的最终实现

目录 1.摘要 2.最终实现的ModelSim仿真 3.Matlab仿真和MoselSim仿真进行对比 4.完整工程 1.摘要 本系统在Xilinx的zynq 7000系列FPGA芯片上实现了一个基于IEEE 802.11a协议的OFDM基带处理发射机的功能。本系统包含了整个发射机的所有功能&#xff0c;包括序列训练符号、Si…

现代信号处理11_Spectral Analysis谱分析(CSDN_20240526)

谱分析与傅里叶变换 对于一个信号&#xff0c;一方面可以从时域上对其进行分析&#xff0c;另一方面也可以从频域上对其进行认识&#xff0c;对信号进行频谱分析能够帮助我们了解能量在频域上的分布。 确定性信号的能量通常是有限的&#xff0c;而平稳随机信号的能量通常是无限…

No input file specified.(‘.user.ini’文件问题宝塔复制到本地,其他情况可跳过)

症状 病因 一般是宝塔直接copy到本地的情况。 宝塔面板中的.user.ini文件是一个重要的配置文件&#xff0c;它主要用于配置PHP运行环境和网站环境。以下是.user.ini文件的主要作用和操作建议&#xff1a; 防止跨目录访问和文件跨目录读取。这是.user.ini文件的主要作用之一&a…

kafka-消费者组-点对点测试

文章目录 1、点对点测试1.1、获取 kafka-consumer-groups.sh 的帮助信息1.2、列出所有的消费者组1.3、创建消费者1并指定组 my_group11.4、创建消费者2并指定组 my_group11.5、创建消费者3并指定组 my_group11.6、创建生产者发送消息到 my_topic1 主题1.6.1、发送第一条消息rom…

用循环神经网络预测股价

循环神经网络可以用来对时间序列进行预测&#xff0c;之前我们在介绍循环神经网络RNN,LSTM和GRU的时候都用到了正弦函数预测的例子&#xff0c;其实这个例子就是一个时间序列。而在众多的时间序列例子中&#xff0c;最普遍的就是股价的预测了&#xff0c;股价序列是一种很明显的…

【PG16】后 EL 7 时代,PG 16 如何在 CentOS 7 上运行

↑ 关注“少安事务所”公众号&#xff0c;欢迎⭐收藏&#xff0c;不错过精彩内容~ ★ 本文写于 2023-09-29 PostgreSQL 16 Released 9/14, PostgreSQL 16 正式发布。从发布公告^1 和 Release Notes^2 可以看到 PG16 包含了诸多新特性和增强改进。 性能提升&#xff0c;查询计划…

ssm超市管理系统java超市进销存管理系统jsp项目

文章目录 超市进销存管理系统一、项目演示二、项目介绍三、系统部分功能截图四、七千字项目文档五、部分代码展示六、底部获取项目源码和七千字项目文档&#xff08;9.9&#xffe5;带走&#xff09; 超市进销存管理系统 一、项目演示 超市进销存管理系统 二、项目介绍 角色分…

Dynadot API调整一览

关于Dynadot Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮…

算法设计第七周(应用哈夫曼算法解决文件归并问题)

一、【实验目的】 &#xff08;1&#xff09;进一步理解贪心法的设计思想 &#xff08;2&#xff09;掌握哈夫曼算法的具体应用 &#xff08;3&#xff09;比较不同的文件归并策略&#xff0c;探讨最优算法。 二、【实验内容】 设S{f1,…,fn}是一组不同的长度的有序文件构…

vue脚手架与创建vue项目

一、前言 vue脚手架的安装与创建vue项目需要先行安装配置node与npm&#xff0c;详情可以看node、npm的下载、安装、配置_node 下载安装-CSDN博客 二、vue脚手架的使用 1、vue与vue脚手架的版本 Vue脚手架&#xff08;Vue CLI&#xff09;是Vue.js官方提供的一个命令行工具&…

打乱一维数组中数据(小练习)

int[] tempArr{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; 要求&#xff1a;打乱一维数组的数据&#xff0c;并按照4个一组的方式添加到二维数组中。 package chengyu4; import java.util.Random; public class Test{public static void main(String args[]) {int[] temArr {1…