条件分支if和else的使用详解

news2024/10/8 22:16:45

顺序结构没什么好讲的,就是从上到下的写代码,所以接下来,壹哥就直接带各位来学习分支结构里的条件分支。我们在前面说过,分支结构,或者叫做条件分支,其实有两种情况。一种是if...else...类型的条件分支,一种是switch...case...类型的条件分支,今天我们先来学习if和else的使用。

1. if基本语法

在Java代码中,如果我们要根据某个条件来决定是否执行一段代码,就可以考虑使用if语句。if语句的基本语法是:

if(条件表达式){
	//满足条件时要执行的语句 
} 

在上面的语法中,会根据if(条件表达式)里的计算结果(true或者false),由JVM决定是否执行{}里的代码块。如果为true,就执行,否则就不执行。

2. if的单分支语句

首先我们通过一个简单的需求,来学习if的单分支语句。所谓的单分支语句,就是说只有一种判断情况,条件为真就执行,否则就不执行。比如这个需求:“如果你年满18岁,就可以攒劲的节目”。

publicclassDemo01 {

	publicstaticvoidmain(String[] args) {
		// if语句
		
		//案例1:如果年龄大于等于18岁,就可以看攒劲的节目了
		System.out.println("请输入你的年龄");
		
		//获取Scanner对象
		Scanner sc=new Scanner(System.in);
		//获取年龄
		int age = sc.nextInt();
        //如果语句块{}里面只有一条执行语句,{}可以省略,但建议保留。
		if(age >= 18){
		    System.out.println("本节目只对成年人开放,未成年人请在父母陪同下观看,节目正在缓冲......");
		}

    	//案例2:如果身高大于180,且体重小于180,就可以当模特        
		System.out.println("请输入你的身高");
		int height = sc.nextInt();
		System.out.println("请输入你的体重");
		int weight = sc.nextInt();
        
    	//条件表达式中,可以结合之前学习过的逻辑运算符//采用短路与&&,提高效率
		if(height > 180 && weight < 180){
		    System.out.println("恭喜你,可以当模特了");
		}
	}

}

另外如果{}语句块里面只有一条执行语句,{}可以省略,但建议保留。因为如果我们采用缩进的格式,很容易把后面的语句都看成是if语句的执行块,所以不推荐忽略花括号的写法。

单分支语句应对的情况是很简单的,在实际开发中可能会很复杂,这就需要使用多分支语句来进行处理。

3. if的多分支语句

3.1 if...else结构

if...else...结构会根据条件表达式的结果进行判断,当表达式的结果为true,则执行语句块A;否则执行else后面的语句块B。基本语法结构如下:

if(逻辑条件){ 
     //满足逻辑条件执行的代码 
 }else{ 
     //不满足逻辑条件执行的代码 
 }

案例如下:

publicclassDemo01 {

	publicstaticvoidmain(String[] args) {
		// if多分支语句
		
		Scanner sc=new Scanner(System.in);
		
		//案例:如果用户名为admin、密码为123456,就跳转到首页,否则跳转到登录页面
		System.out.println("请输入用户名");
		String username = sc.next();
		System.out.println("请输入密码");
		String password = sc.next();

		//equals()比较方法
		if("admin".equals(username) && "123456".equals(password)){
		    System.out.println("跳转首页");
		}else{
		    System.out.println("跳转登录页面");
		}  
	}

}

我们要注意,在java中,"=="比较的是两个对象的内存地址是否相同,String类中的equals()方法比较的是内容是否相同。如果是基本数据类型,我们可以使用==进行比较;而对于String字符串,一般是使用equals()方法进行比较。

另外我们在使用equals()方法进行比较时,要采用类似"admin".equals(username)的写法而不要采用username.equals("admin")的写法。因为username对象的值有可能为null,这样就可能会产生NullPointerException异常。

3.2 if多分支

if多分支就是可以利用多个if ... else if ...else...进行串联。多分支可以根据多个条件表达式的结果进行判断:

如果条件表达式1的结果为true,则执行语句块1;否则去判断条件表达式2;

如果条件表达式2的结果为true,则执行语句块2,否则去判断条件表达式3;

....

如果所有的条件表达式结果都为false,则执行语句块N+1;

else是可选的,根据需要可以省略。

if多分支的语法结构如下:

if(逻辑条件1){ 
    //满足逻辑条件1执行的代码 
}else if(逻辑条件2){ 
    //隐藏条件(不满足条件1) 满足逻辑条件2执行的代码 
}else if(逻辑条件3){ 
    //隐藏条件(不满足条件1、2) 满足逻辑条件3执行的代码 
}else{ 
    //不满足以上所有逻辑条件执行的代码 
}

需求案例:请你根据手上的资金选择购买的手机品牌。如果你手里的钱大于10000,就买个苹果;如果大于7000, 就买个华为;如果大于5000,就买个小米;如果大于3000,就买个诺基亚;否则,乖乖地去打公共电话。

publicclassDemo01 {

	publicstaticvoidmain(String[] args) {
		// if多分支语句
		
		Scanner sc=new Scanner(System.in);
		
		//请你根据手上的资金选择购买的手机品牌。如果你手里的钱大于10000,就买个苹果;
		//如果大于7000, 就买个华为;如果大于5000,就买个小米;如果大于3000,就买个诺基亚;
		//否则,乖乖地去打公共电话。
		System.out.println("请输入余额");
		int money = sc.nextInt();
		if(money > 10000){
		    System.out.println("苹果手机");
		}elseif(money > 7000){ //money <= 10000
		    System.out.println("华为手机");
		}elseif(money > 5000){
		    System.out.println("小米手机");
		}elseif(money > 3000){
		    System.out.println("诺基亚手机");
		}else{
		    System.out.println("打公共电话");
		}
	}

}

大家要注意,我们在串联使用多个if时,要特别注意判断顺序和边界条件的判断。

4. if嵌套

if嵌套的语法结构如下:

if(逻辑条件1){ 
     if(逻辑条件2){ 
         //满足逻辑条件1且满足条件2执行的代码 
     }else{ 
         //满足逻辑条件1但不满足条件2执行的代码 
     } 
 }else{ 
     //不满足逻辑条件1执行的代码 
 }

需求案例:学校举行跑步比赛,如果成绩在15秒以内,可以进入决赛,男的进入男子组决赛,女的进入女子组决赛。

publicclassDemo01 {

	publicstaticvoidmain(String[] args) {
		// if多条件嵌套
		Scanner sc=new Scanner(System.in);
		
		//学校举行跑步比赛,如果成绩在15秒以内,可以进入决赛,男的进入男子组决赛,女的进入女子组决赛
		System.out.println("请输入你的比赛成绩");
		double score = sc.nextDouble();
		if(score < 15){
		    System.out.println("请输入你的性别");
		    String sex = sc.next();
		    if("男".equals(sex)){
		        System.out.println("恭喜进入男子组");
		    }else{
		        System.out.println("恭喜进入女子组");
		    }            
		}else{
		    System.out.println("很遗憾你被淘汰了!!!");
		}
	}

}

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

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

相关文章

vue组件通信6种方式总结(常问知识点)

前言 在Vue组件库开发过程中&#xff0c;Vue组件之间的通信一直是一个重要的话题&#xff0c;虽然官方推出的 Vuex 状态管理方案可以很好的解决组件之间的通信问题&#xff0c;但是在组件库内部使用 Vuex 往往会比较重&#xff0c;本文将系统的罗列出几种不使用 Vuex&#xff…

X.509证书详解

概述 X.509是公钥基础设施&#xff08;PKI&#xff09;的标准格式。X.509证书就是基于国际电信联盟&#xff08;ITU&#xff09;制定的X.509标准的数字证书。X.509证书主要用于识别互联网通信和计算机网络中的身份&#xff0c;保护数据传输安全。X.509证书无处不在&#xff0c…

Spring之底层架构核心概念-过滤器

文章目录1.excludeFilters:排除过滤器2.includeFilters:包含过滤器3.问题&#xff1a;spring为什么能通过是否有Component注解来判断是否需要去注册bean呢&#xff1f;3.1 看源码3.2 原因4.总结1.excludeFilters:排除过滤器 用excludeFilters排除UserService 这个类后&#xf…

nature级别图表:单细胞转录组细胞比例统计可视化函数

单细胞转录组细胞比例&#xff1a; 关于单细胞比例的计算和作图我们之前出过3期&#xff0c;单细胞比例的展示是很多单细胞文章必不可少的内容&#xff1a;跟着Cell学单细胞转录组分析(六):细胞比例计算及可视化 相信跟着学习的小伙伴已经掌握了。最近学习一篇《nature medici…

JavaScript 数组-概念,创建数组,遍历数组,新增元素

JavaScript 数组-概念&#xff0c;创建数组&#xff0c;遍历数组&#xff0c;新增元素 目录JavaScript 数组-概念&#xff0c;创建数组&#xff0c;遍历数组&#xff0c;新增元素1. 数组的概念2. 创建数组2.1 数组的创建方式2.2 利用 new 创建数组2.3 利用数组字面量创建数组2.…

模式分类识别 | BiLSTM双向长短期记忆神经网络数据多特征分类预测(Matlab完整程序)

模式分类识别 | BiLSTM双向长短期记忆神经网络数据多特征分类预测(Matlab完整程序) 目录 模式分类识别 | BiLSTM双向长短期记忆神经网络数据多特征分类预测(Matlab完整程序)分类结果基本介绍程序设计参考资料分类结果

深度学习实验(五)——循环神经网络编程

深度学习实验五:循环神经网络编程 本次实验练习使用torch.nn中的类设计一个循环神经网络进行MNIST图像分类。 在本次实验中&#xff0c;你要设计一个CNN&#xff0c;用于将282828 \times 282828的MNIST图像转换为MMDM\times M\times DMMD的特征图&#xff0c;将该特征图看作是…

我,做了两年程序员,存了巨款5000,你们拿什么跟我比?

&#x1f550;没错&#xff0c;标题所见&#xff0c;从21年1月份开始从事程序员工作也过了两年了&#xff0c;今年还是没有存到钱。 今年换了一份工作&#xff0c;四月份的时候&#xff0c;从惠州换到了广州工作&#xff0c;从制造业转行到了政务行业&#xff0c;工资涨了&…

Keithley 2604B数字源表-安泰测试

Keithley 2600B 系列系统 SMU 仪器是业界标准电流-电压源和测量解决方案&#xff0c;适用于高度自动化生产测试应用。 双通道和单通道型号都紧密集成一个精密电源、真正电流源、数字万用表和具有脉冲生成功能的电子负载。 另外&#xff0c;TSP? 技术可运行完整测试程序&#x…

多点双向重发布的应用

目录 1.拓扑图 2.实验思路 3.主要配置 4.测试 5.实验总结 1.拓扑图 2.实验思路 在配置完RIP和OSPF之后&#xff0c;在2&#xff0c;3号设备上进行多点的双向重发布由于在进行了多点的双向重发布之后&#xff0c;会出现大量的负载均衡&#xff0c;导致选路不佳的问题解决办…

前端工程师leetcode算法面试必备-二叉树深度广度遍历

一、前言 Medium 难度主要考察结合二叉树性质的 CRUD 操作&#xff0c;而这一切的基础都离不开遍历二叉树。 二叉树是图的子集&#xff0c;因而同样适用以下两种搜索思想&#xff1a; **DFS&#xff08;深度优先搜索&#xff09;&#xff1a;**沿着根节点递归下去&#xff0c…

普通程序员怎么赚多份钱?解锁更多赚钱新姿势

在当下这个社会&#xff0c;学会如何make money很重要。 咱们是个俗人&#xff0c;赚钱才是社会生存的头等大事。这不是高山流水的世界&#xff0c;而是能力创造财富&#xff0c;对于程序员来说&#xff0c;更是如此。 作为程序员&#xff0c;我们有更多挣钱的姿势&#xff01;…

通过一个测试项目了解EF CORE

首先用vs2019创建一个.net core项目 可以是控制台应用程序,也可以是asp.net core项目 如果你使用控制台应用程序, 则可以在Main方法中直接使用EF Core进行CRUD操作。这通常用于测试或开发时快速进行数据库操作。 如果你使用ASP.NET Core应用程序, 则可以在控制器中使用EF Cor…

低温超导系统中实现液氦温度准确控制的解决方案

摘要&#xff1a;针对目前两种典型低温超导测试系统中存在的液氦压力控制精度较差的问题&#xff0c;本文提出了相应的解决方案。解决方案分别采用了直接压力控制和流量控制两种技术手段和配套数控阀门&#xff0c;结合24位AD和16位DA的超高精度的PID真空压力控制器和压力传感器…

第三十九章 贪心算法——区间问题(下)

第三十九章 贪心算法——区间问题&#xff08;下&#xff09;一、区间问题1&#xff1a;最大不相交区间数量1、思路详解2、代码实现二、区间问题2&#xff1a;区间覆盖1、问题2、思路3、代码一、区间问题1&#xff1a;最大不相交区间数量 1、思路详解 这道题和前一章讲的最后一…

IDEA 使用的小技巧

1、调整 idea 的虚拟内存&#xff1a; 尽管本质都是去改变 .vmoptions 配置文件&#xff0c;但推荐使用Change Memory Settings去调整&#xff0c;选择Edit Custom VM Options 或者在本地磁盘目录更改&#xff0c;通过某些方法破解的 idea 很可能造成 idea 打不开的情况 2、显…

【数据结构-源码分析】HashMap源码分析(超级详细)

文章内容1、HashMap简介2、类结构3、属性4、构造方法5、方法5.1、put方法5.2、resize方法6、jdk1.8的优化1、HashMap简介 HashMap基于哈希表的Map接口实现&#xff0c;是以key-value存储形式存在。&#xff08;除了不同步和允许使用 null 之外&#xff0c;HashMap 类与 Hashta…

Oracle数据库同步复制工具Beedup产品功能(二)

接续...... 8、对象比较 Beedup提供主从库相关对象比较功能&#xff0c;比对结果包含各类对象概要统计及差异详情。 支持Oracle、SQL Server、MySQL、DB2 对象比较。 9、 对象恢复 Beedup在向从库写入数据时会禁用目标表的关联触发器&#xff0c;另外对于Oracle 序列的状态…

MySQL复制技术方案——GTID复制配置

在日常运维中&#xff0c;GTID带来的最方便的作用就是搭建和维护主从复制&#xff0c;这也是DBA日常工作中最经常的操作了。GTID的主从模式替代了MySQL前期版本中利用二进制日志文件的名称和日志位置的做法&#xff0c;使用GTID使操作和维护都变得更加简洁和可靠。 搭建主从时…

SQL SELECT 语句

SELECT 语句用于从数据库中选取数据。 SQL SELECT 语句 SELECT 语句用于从数据库中选取数据。 结果被存储在一个结果表中&#xff0c;称为结果集。 SQL SELECT 语法 SELECT column1, column2, ... FROM table_name; 与 SELECT * FROM table_name; 参数说明&#xff1a; …