【JAVASE】顺序和选择结构
⭐ 作者:小胡_不糊涂
🌱 作者主页:小胡_不糊涂的个人主页
📀 收录专栏:浅谈Java
💖 持续更文,关注博主少走弯路,谢谢大家支持 💖
顺序和选择
- 1. 顺序结构
- 2. 分支结构
- 2.1 if 语句
- 2.2 switch 语句
1. 顺序结构
顺序结构比较简单,就是按照代码书写的顺序一行一行执行。
例如:
System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
这段代码的运行结果就是从上至下输出:
aaa
bbb
ccc
如果调整代码的书写顺序, 则执行顺序也发生变化:
System.out.println("aaa");
System.out.println("ccc");
System.out.println("bbb")
🍤 输出:
aaa
ccc
bbb
2. 分支结构
2.1 if 语句
语法格式1:
if(布尔表达式){// 语句
}
如果布尔表达式结果为 true,执行 if 中的语句,否则不执行。
比如:小明,如果这次考试考到90分或以上,给你奖励一个鸡腿。
public static void main(String[] args) {int score = 92;if(score >= 90){System.out.println("吃个大鸡腿!!!");}}
🍤 运行结果:
语法格式2:
if(布尔表达式){// 语句1
}else{// 语句2
}
如果布尔表达式结果为 true,则执行 if 中语句,否则执行 else 中语句。
比如:小明,如果这次考到90分以上,给你奖励一个大鸡腿,否则奖你一个大嘴巴子。
public static void main(String[] args) {int score = 89;if(score >= 90){System.out.println("吃个大鸡腿!!!");}else{System.out.println("挨大嘴巴子!!!");}
}
🍤 运行结果:
语法格式3:
if(布尔表达式1){// 语句1
}else if(布尔表达式2){// 语句2
}else{// 语句3
}
表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3。
比如:我们定义一个分数区间来划分学生的成绩
分数在 [90, 100] 之间的,为优秀
分数在 [80, 90) 之前的,为良好
分数在 [70, 80) 之间的,为中等
分数在 [60, 70) 之间的,为及格
分数在 [ 0, 60) 之间的,为不及格
错误数据
代码实现:
public static void main(String[] args) {int score=88;//学生成绩//判断if(score >= 90){System.out.println("优秀");}else if(score >= 80 && score < 90){System.out.println("良好");}else if(score >= 70 && score < 80){System.out.println("中等");}else if(score >= 60 && score < 70){System.out.println("及格");}else if(score >= 0 && score < 60){System.out.println("不及格");}else{System.out.println("错误数据");}
}
🍤 运行结果:
实例1:判断一个数字是奇数还是偶数
首先需要知道判断奇偶的规则。数学上,我们判断奇偶数是以该数是否可以整除 2 为根据的,一个数能够整除 2,即计算的余数为 0,当除以 2 后的余数为 0 时,就说明了该数为偶数,否则是奇数。
我们已经了解判断奇偶数的方法,尝试写出代码:
public static void main(String[] args) {int num = 10;if (num % 2 == 0) {System.out.println("num 是偶数");} else {System.out.println("num 是奇数");}
}
🍤 运行结果:
实例2:判断一个数字是正数,负数,还是零
大于 0 是正数,小于 0 是负数,所以这里只需要判断是大于、小于还是等于。
public static void main(String[] args) {int num = 10;if (num > 0) {System.out.println("正数");} else if (num < 0) {System.out.println("负数");} else {System.out.println("0");}
}
🍤 运行结果:
实例3:判断一个年份是否为闰年
普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。
世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。
public static void main(String[] args) {int year = 2000;if (year % 100 == 0) {// 判定世纪闰年if (year % 400 == 0) {System.out.println("是闰年");} else {System.out.println("不是闰年");}} else {// 普通闰年if (year % 4 == 0) {System.out.println("是闰年");} else {System.out.println("不是闰年");}}
}
🍤 运行结果:
注:
- 分号问题
这段代码的结果会是什么?
public static void main(String[] args) {int x = 20;if (x == 10);{System.out.println("hehe");}
}
🍤 运行结果:
有人可能会好奇,为什么这里 x 明明是20,不等于10啊,怎么还会打印 hehe 。
仔细观察就会发现:if 语句后跟有一个分号,这里导致分号成为了 if 语句的语句体,而 { } 中的代码已经成为了和一个 if 无关的代码块,所以会打印出来。
🍩分号代表语句的结束
- 悬垂 else 问题
public static void main(String[] args) {int x = 10;int y = 10;if (x == 20)if (y == 10)System.out.println("aaa");elseSystem.out.println("bbb");
}
🍤 运行结果:
为什么什么都没有打印?
首先if / else 语句中可以不加大括号,当不加{}时,他只控制下面的一条语句,要控制多行,必须加上大括号。
其次就是 else 是和最接近的 if 匹配,并不是和谁对齐就与它匹配。
2.2 switch 语句
基本语法:
switch(表达式){case 常量值1:{语句1;[break;]}case 常量值2:{语句2;[break;]}...default:{...;//内容都不满足时执行语句[break;]}
}
执行流程:
- 先计算表达式的值
- 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束
- 当表达式的值没有与所列项匹配时,执行default
实例:根据 day 的值输出星期
public static void main(String[] args) {int day = 6;switch(day) {case 1:System.out.println("星期一");break;//遇到break停止,跳出switch语句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:case 7:System.out.println("周末");break;default:System.out.println("输入有误");break;}
}
🍤 运行结果:
注:
- 多个case后的常量值不可以重复
- switch的括号内只能是以下类型的表达式:
基本类型:byte、char、short、int,不能是long、float、double、boolean类型;
引用类型:String常量串、枚举类型 - break 不要遗漏,否则会失去 “多分支选择” 的效果
- switch 不能表达复杂的条件
- switch 虽然支持嵌套,但是很丑,一般不推荐,毕竟这是一个看脸的世界~
使用错误类型
public static void main(String[] args) {double num=1.0;switch(num) {case 1.0:System.out.println("hehe");break;case 2.0:System.out.println("haha");break;}
}
🍤 编译出错:
遗漏break
public static void main(String[] args) {int day = 1;switch(day) {case 1:System.out.println("星期一");// break;case 2:System.out.println("星期二");break;}
}
🍤 运行结果:
不能表达复杂条件
// 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
// 这样的代码使用 if 很容易表达, 但是使用 switch 无法表示
if (num > 10 && num < 20) {System.out.println("hehe");
}
相关文章:

【JAVASE】顺序和选择结构
⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈Java 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 顺序和选择 1. 顺序结构2. 分支结构2.1 …...

Oracle恢复删除的数据
不下心删除了生产库的数据或者不小心删除了一部分数据,如何恢复找回。 Oracle恢复删除数据的方法 方案一 利用oracle提供的闪回方法进行数据恢复,适用于delete删除方式 首先获取删除数据的时间点: select * from v$sql where sql_text l…...

(无人机方向)ros小白之键盘控制无人机(终端方式)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一:配置pycharm的ros开发环境二:核心代码讲解三 效果演示XTDrone 四 完整代码 前言 ubuntu 18.04 pycharm ros melodic 做一个在终端中…...

【python学习笔记】argparse --- 命令行选项、参数和子命令解析器
argparse 是 Python 的标准库中的一个模块,用于解析命令行参数。它提供了一种简单而灵活的方式来处理命令行输入,并生成易于使用的帮助文档。 使用 argparse 模块可以轻松地定义命令行参数和选项,并自动生成用法帮助和错误消息。示例&#x…...

【Java框架】RPC远程调用
RPC架构 一、RPC概述 RPC(Remote Procedure Call)叫作远程过程调用,它是利用网络从远程计算机上请求服务,可以理解为把程序的一部分放在其他远程计算机上执行。通过网络通信将调用请求发送至远程计算机后,利用远程计…...

云原生全栈体系(一)
云平台核心 第一章 为什么用云平台 环境统一按需付费即开即用稳定性强 一、国内常见云平台 阿里云、百度云、腾讯云、华为云、青云… 二、国外常见云平台 亚马逊 AWS、微软 Azure … 三、公有云 购买云服务商提供的公共服务器 公有云是最常见的云计算部署类型。公有云资…...

【【51单片机直流电机调速】】
学会电机调速,掌握中国速度 PWM的生成方法 先用户设定一个比较值,然后计数器定时自增。 当计数器<比较值,输出0 当计数器>比较值,输出1 main.c #include <REGX52.H> #include"delay.h" #include"…...

【Spring Boot】
目录 🍪1 Spring Boot 的创建 🎂2 简单 Spring Boot 程序 🍰3 Spring Boot 配置文件 🍮3.1 properties 基本语法 🫖3.2 yml 配置文件说明 🍭3.2.1 yml 基本语法 🍩3.3 配置文件里的配置类…...

使用docker 部署自己的chatgpt
直接docker部署 docker run --name chatgpt-web -d -p 3002:3002 --env OPENAI_API_KEYyour_api_key chenzhaoyu94/chatgpt-web:latestDocker compose部署 version: 3services:app:image: chenzhaoyu94/chatgpt-web # 总是使用 latest ,更新时重新 pull 该 tag 镜像即可ports…...

Python适配器模式介绍、使用方法
一、Python适配器模式介绍 适配器模式(Adapter Pattern) 是一种结构型设计模式,用于将不兼容的接口转换为另一种接口,以便系统间的协同工作。 功能: 适配器模式主要功能是将一个类的接口转换成客户端所期望的另一种接口,以满足…...

【数据结构】复杂度
🔥博客主页:小王又困了 📚系列专栏:数据结构 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、什么是数据结构 二、什么是算法 三、算法的效率 四、时间复杂度 4.…...

【读点论文】PP-YOLOE: An evolved version of YOLO,面向友好部署的模型设计,为项目后续产业落地提供了更加有效的参考
PP-YOLOE: An evolved version of YOLO Abstract 在本报告中,我们介绍了PP-YOLOE,一种具有高性能和友好部署的工业最先进的目标探测器。我们在之前的PP-YOLOv2的基础上进行优化,采用无锚模式,更强大的骨干和颈部配备CSPRepResSt…...

微服务入门---SpringCloud(二)
微服务入门---SpringCloud(二) 1.Nacos配置管理1.1.统一配置管理1.1.1.在nacos中添加配置文件1.1.2.从微服务拉取配置 1.2.配置热更新1.2.1.方式一1.2.2.方式二 1.3.配置共享1)添加一个环境共享配置2)在user-service中读取共享配置…...

51单片机IO口控制
51单片机IO口控制 1.点亮LED灯 原理:根据电路图,指向IO口的引脚;拉低电平,灯亮、 如图: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zfco4IjK-1690308697530)(C:/Users/xie19/Pictur…...

ERROR 1064 - You have an error in your SQL syntax;
ERROR 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near (/, 少个逗号吧,以前开始写SQL,特别是修改SQL的时候容易出现这样错误。 而且自己也知道在附近…...

leetcode做题笔记46
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 思路一:回溯 void swap(int *nums,int index1,int index2) {int temp nums[index1];nums[index1] nums[index2];nums[index2] temp; }void prem(int* nu…...

快问快答JS面向对象面试题
1、说说你对闭包的理解 使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。在js中,函数即闭包,只有函数才会产生作用…...

googlenet论文理解
参考文章:https://www.cnblogs.com/czy4869/p/8977788.html 以及下面这篇的前几行让我弄懂了论文里说的稀疏性和计算性能兼顾:参考文章:https://blog.csdn.net/weixin_52121118/article/details/119740279...

OnnxRuntime TensorRT OpenCV::DNN性能对比(YoloV8)实测
1. 前言 之前把ORT的一套推理环境框架搭好了,在项目中也运行得非常愉快,实现了cpu/gpu,fp32/fp16的推理运算,同onnx通用模型在不同推理框架下的性能差异对比贴一下,记录一下自己对各种推理框架的学习状况 YoloV8模型大小 模型名称参数量NANO3.2M...... 2. CPU篇 CPU推理框架性…...

【QT 网络云盘客户端】——获取用户文件列表信息
目录 1.获取用户文件列表信息分析 2.设置图标属性 3.向服务器获取文件的数量 4.向服务器获取文件信息列表 4.显示图标 1.获取用户文件列表信息分析 1.将QListWidget设置为图标模式 2. 当我们点击"按下载量升序","按下载量降序",“更新” 菜单选项 都会…...

从0到1,无代码开发如何简化产品创新流程
在当今竞争激烈的市场环境中,产品创新已经成为企业成功的关键因素之一。为了在市场上保持竞争力,企业需要不断地推出新产品或改进现有产品。然而,传统的开发流程往往耗时费力,且成本高昂。因此,简化产品创新流程成为了…...

select、epoll 的快速核心理解
一、 select 最low的就是在用户代码中自旋实现所有阻塞socket的监听。但是每次判断socket是否产生数据,都涉及到用户态到内核态的切换。 于是select改进:将fd_set传入内核态,由内核判断是否有数据返回; 然后最low的只能使用自旋…...

HTTP和HTTPS的区别
一、两者概念 1.1 HTTP概念 HTTP 的全称是超文本传输协议(HyperText Transfer Protocol) 是一种用于分布式、协作式和超媒体信息系统的应用协议,简单来说就是一种分布和接收HTML页面的方法,被用于在Web浏览器和网站服务器之间传递…...

分布式异步任务处理组件(二)
一些关键点的设计脑暴记录----very important!!! 首先,任务存储交给kafka,由节点负责写入kafka,acks1;失败重试;透传kafka的提交可靠性,保证任务提交成功;后…...

Jenkins 拉取 GitHub 私有仓库失败问题
添加仓库的时候提示 stderr: fatal: Cannot prompt because user interactivity has been disabled. 把在 GitHub账户设置中生成的个人访问令牌填到地址里...

小程序 多层次对象数组的赋值、动态赋值
1、给对象赋值 data: {form: {Name: ,IDCard: ,Sex: ,}},对单个属性赋值 this.setData({form.Name:章三,[form.Sex]:女,}) 动态赋值 onChangeDate(e) {let field e.currentTarget.dataset.field;this.setData({[form.${field}]: e.detail.data})}, field 是wxml上通过dat…...

angular踩坑
1 新版路由守卫由于canActivate已被废弃,采用函数函数,但其参数中无法像类一样进行路由对象注入,如何实现路由首位中的页面跳转? import { CanActivateFn,Router,ActivatedRouteSnapshot, RouterStateSnapshot,} from angular/ro…...

C#时间轴曲线图形编辑器开发1-基本功能
目录 一、前言 1、简介 2、开发过程 3、工程下载链接 二、基本功能实现 1、绘图面板创建 (1)界面布置 (2)显示面板代码 (3) 面板水平方向、竖直方向移动功能实现 (4)面板放…...

elasticsearch查询操作(DSL语句方式)
说明:本文介绍在kibana,es的可视化界面上对文档的查询操作; 添加数据 先使用API,创建索引库,并且把数据从MySQL中查出来,传到ES上,参考(http://t.csdn.cn/NaTHg) 索引库…...

JavaScript详解
目录 一、JavaScript是什么? 1.1、JavaScript 和 HTML 和 CSS 之间的关系 1.2、JavaScript 运行过程 1.3、JavaScript 的组成 二、JavaScript 的书写形式 1. 行内式 2. 内嵌式 3、外部式 注释 三、输入输出 输入: prompt 输出: alert 输出: …...