当前位置: 首页 > news >正文

【Java|基础篇】逻辑控制-顺序结构、分支结构和循环结构

文章目录

  • 顺序结构
  • 分支结构
    • if单分支语句
    • if else双分支语句
    • if else if else多分支语句
    • switch语句
  • 循环语句
    • for循环
    • while循环
    • do while循环
    • continue
    • break
  • 总结

顺序结构

顺序结构是指代码按照从上往下的顺序依次执行

分支结构

选择语句是条件成立时,才会执行的语句.共有三种.分为是if ,if else和if else if else

if单分支语句

// 语法
if (条件语句){条件为true时 执行的代码
}

注:如果if里面只有一条要执行的语句的话,{} 可以不加,但建议还是加上去.
if 单分支语句执行流程图
在这里插入图片描述

示例:

public static void main(String[] args) {System.out.println("成绩等级评测");int a = 61;if (a >= 60){System.out.println("成绩及格");}System.out.println("评测完毕");
}
/* 
输出结果:
成绩等级评测
a的成绩及格
评测完毕
*/    

if else双分支语句

// 语法:
if (条件语句){条件判断为true时 执行的代码
}else {条件判断为false时 执行的代码
}

if else双分支语句的执行流程:
在这里插入图片描述

示例:

public static void main(String[] args) {System.out.println("成绩等级评测");int a = 61;if (a >= 60){System.out.println("成绩及格");}else{System.out.println("成绩为不合格");}System.out.println("评测完毕");
}
/* 
输出结果:
成绩等级评测
a的成绩及格
评测完毕
*/ 

可以看到else里面的语句并没有被执行,是因为满足了if的条件判断语句,所以执行了if里面的语句.else语句只有在if条件语句不满足时才会执行,

if else if else多分支语句

// 语法:
if (条件语句1){条件为true时 执行的代码
}else if(条件语句2){条件为true时 执行的代码
}else if(条件语句3){条件为true时 执行的代码//else if语句可以有多个,此处只列出了两个
}else{以上条件均不满足时,执行此处的代码
}

if else if else多分支语句的执行流程
在这里插入图片描述
还是刚才的示例,如果再细分一下,分数[0,60)为不合格,[60,75)为合格,[75,90)为良好,[90,100]为优秀.那么此时单分支和双分支就不合适了.这是就要使用多分支语句了.
示例:

public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入你的分数:");int a = scanner.nextInt();System.out.println("成绩等级评测");if (a < 60){System.out.println("成绩不及格");}else if(a < 75){System.out.println("成绩及格");}else if (a < 90) {System.out.println("成绩良好");}else{System.out.println("成绩优秀");}System.out.println("评测完毕");
}

注:此处的写法有很多.我这里的写法也不一定是最好的.
此时就可以进行输入分数进行评测了.来看演示结果:
在这里插入图片描述
这里的结果为"成绩良好"说明进入到了第二else if语句,因为if语句和else if中的条件语句均不满足, 虽然写着是a < 90,但实际上表示的是a >=75 && a < 90,这里需要注意

if else if else 里面是可以相互嵌套的,但是最好不要嵌套的过多,可读性不好

switch语句

switch (表达式){case 常量值1:执行的代码break;case 常量值2:执行的代码break;case 常量值3:执行的代码break;...default: // 其它的情况执行的代码
}

执行流程:

  • 先计算表达式的值
  • 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束
  • 当表达式的值没有与所列项匹配时,执行default
    public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int day = scanner.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("输入错误!");}}

注意:

  • 多个case后的常量值不可以重复
  • switch 不能表达复杂的条件
  • break 不要遗漏, 否则会失去 "多分支选择" 的效果
  • default与else类似,都是前面条件都不满足时执行
  • switch中的最后一个语句可以不加break

运行结果:
在这里插入图片描述
在这里插入图片描述
如果没有break,它就会在满足的条件的地方继续往后面执行,直到遇到break或者执行完后面所有代码

循环语句

循环语句有for循环,while循环和do while循环

在循环中会有三个表达式:

  • 表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次
  • 表达式2: 循环条件,满则循环继续,否则循环结束
  • 表达式3: 循环变量更新方式

下面会对这些内容一一介绍

for循环

// 语法
for(表达式1;布尔表达式2;表达式3){循环语句;
}

for循环的执行流程图:
在这里插入图片描述

举个简单的例子,打印从1到5的数字:

    public static void main(String[] args) {for (int i = 0; i < 5; i++) {System.out.println(i+1);}}// 输出结果为 1~5

这里的写法有很多.
i是从0开始的,第一次i等于0,对i进行判断,小于5.执行循环体.然后执行i++.继续i进行判断.然后循环往复.直到i>=5.不满足条件.循环结束
大家只要掌握一种循环,学习另外两种循环就很容易了.

while循环

// 语法
while(循环条件){循环语句
}
// 如果循环条件true,就会执行循环语句.
// 循环条件为false时,结束循环

在while循环中,表达式1一般写在while循环的前面,而表达式3写在循环语句中.

do while循环

// 语法
do{循环语句;
}while(循环条件);

与while循环中相同,表达式1一般写在do的前面,而表达式3写在循环语句中.

continue

continue的作用: 跳过本次循环,直接进入下一次循环
如果我想要打印[0,100)之间所有的奇数,用continue就可以这样写

    public static void main(String[] args) {for (int i = 0; i < 100; i++) {if (i % 2 == 0){continue;}else {System.out.println(i);}}}

如果i对2取余结果等于0,说明是偶数,则用continue跳过本次循环.否则就打印i的值

break

break的作用: 结束当前循环

例如:如果要判断arr数组中是否有偶数,如果不是偶数,就打印数组对应下标的值.如果是偶数,则结束循环
代码:

    public static void main(String[] args) {int[] arr = {1,3,5,6,7,9};for (int i = 0; i < arr.length; i++) {if (arr[i] % 2 == 0){System.out.println("arr中有偶数!");break;}System.out.print(arr[i]+" ");}}// 输出结果:// 1 3 5 arr中有偶数!

在arr[i]等于6时,for循环里面的if语句的条件成立,就会打印arr中有偶数!执行break退出循环

总结

本篇文章主要讲解了顺序结构,逻辑结构和循环结构.还有continue和break这两个关键字.
思维导图如下:
在这里插入图片描述

感谢你的观看!希望这篇文章能帮到你!
Java专栏在不断更新中,欢迎订阅!
“愿与君共勉,携手共进!”
在这里插入图片描述

相关文章:

【Java|基础篇】逻辑控制-顺序结构、分支结构和循环结构

文章目录顺序结构分支结构if单分支语句if else双分支语句if else if else多分支语句switch语句循环语句for循环while循环do while循环continuebreak总结顺序结构 顺序结构是指代码按照从上往下的顺序依次执行 分支结构 选择语句是条件成立时,才会执行的语句.共有三种.分为是if…...

【数据挖掘实战】——家用电器用户行为分析及事件识别(BP神经网络)

项目地址&#xff1a;Datamining_project: 数据挖掘实战项目代码 目录 一、背景和挖掘目标 1、问题背景 2、原始数据 3、挖掘目标 二、分析方法与过程 1、初步分析 2、总体流程 第一步&#xff1a;数据抽取 第二步&#xff1a;探索分析 第三步&#xff1a;数据的预处…...

Kmeans聚类算法-python

import random import pandas as pd import numpy as np import matplotlib.pyplot as plt # 计算欧拉距离 def calcDis(dataSet, centroids, k): clalist[] for data in dataSet: diff np.tile(data, (k, 1)) - centroids #相减 (np.tile(a,(2,1))就是把…...

Linux|奇怪的知识|locate命令---文件管理小工具

前言: Linux的命令是非常多的&#xff0c;有一些冷门的命令&#xff0c;虽然很少用&#xff0c;但可能会有意想不到的功能&#xff0c;例如&#xff0c;本文将要介绍的locate命令。 &#xff08;平常很少会想到使用此命令&#xff0c;find命令使用的更多&#xff0c;偶然想起…...

Cadence Allegro 导出Function Pin Report报告详解

⏪《上一篇》   🏡《上级目录》   ⏩《下一篇》 目录 1,概述2,Function Pin Reportt作用3,Function Pin Report示例4,Function Pin Report导出方法4.1,方法14.2,方法2B站关注“硬小二”浏览更多演示视频 1,概述...

蓝桥杯2018年第九题-缩位求和

题目&#xff1a;在电子计算机普及以前&#xff0c;人们经常用一个粗略的方法来验算四则运算是否正确。比如&#xff1a;248 * 15 3720把乘数和被乘数分别逐位求和&#xff0c;如果是多位数再逐位求和&#xff0c;直到是1位数&#xff0c;得2 4 8 14 > 1 4 5;1 5 65…...

基于Yolv5s的口罩检测

1.Yolov5算法原理和网络结构 YOLOv5按照网络深度和网络宽度的大小&#xff0c;可以分为YO-LOv5s、YOLOv5m、YOLOv5l、YOLOv5x。本文使用YOLOv5s&#xff0c;它的网络结构最为小巧&#xff0c;同时图像推理速度最快达0.007s。YO-LOv5的网络结构主要由四部分组成&#xff0c;分别…...

Linux基本命令

Linux基本命令Linux的目录结构Linux命令入门目录切换相关命令&#xff08;cd/pwd&#xff09;相对路径、绝对路径和特殊路径符创建目录命令&#xff08;mkdir&#xff09;文件操作命令part1 (touch、cat、more)文件操作命令part2 (cp、mv、rm&#xff09;查找命令 (which、find…...

云原生场景下的安全左移

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/129430859 一、安全左移概述 安全左移需要考虑开发安全、软件供应链安全、镜像仓库、配置核查这四个部分。 首先是开发安全&#xff0c;安全团队需要关注代码漏洞&#xff0c;比如使用代码检查工具进…...

mysql面试经典问题

文章目录 1. 能说下myisam 和 innodb的区别吗?2. 说下mysql的索引有哪些吧,聚簇和非聚簇索引又是什么?3. 那你知道什么是覆盖索引和回表吗?4. 锁的类型有哪些呢5. 你能说下事务的基本特性和隔离级别吗?6. 那ACID靠什么保证的呢?7. 那你说说什么是幻读,什么是MVCC?幻读什…...

微信小程序|基于小程序+C#制作一个考试答题小程序

基于小程序+C#制作一个考试答题小程序打破传统线下考试答题的边界线问题,使考试不用再局限与某个统一的场所,只要有设备,哪里都能考试。 一、小程序...

【1605. 给定行和列的和求可行矩阵】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你两个非负整数数组 rowSum 和 colSum &#xff0c;其中 rowSum[i] 是二维矩阵中第 i 行元素的和&#xff0c; colSum[j] 是第 j 列元素的和。换言之你不知道矩阵里的每个元素&#xff0c;但是你知…...

Linux命令之nano命令

一、nano命令简介 nano是一个小型、免费、友好的编辑器&#xff0c;旨在取代非免费Pine包中的默认编辑器Pico。nano不仅复制了Pico的外观&#xff0c;还实现了Pico中一些缺失&#xff08;或默认禁用&#xff09;的功能&#xff0c;例如“搜索和替换”和“转到行号和列号”。nan…...

IT项目管理(作业1)

一.单选题&#xff08;共12题,100.0分&#xff09; 1.以下哪项是项目的一个实例?( ) A、改进现有的业务流程或程序B、为公司运营提供信息技术支持C、批量生产一种新近开发出来的家用电冰箱D、管理一个公司 我的答案&#xff1a;A 2.下列哪项不能成为项目结束的理由?( ) A…...

蓝桥杯嵌入式(G4系列):串口收发

前言&#xff1a; 在整个蓝桥杯考试中涉及串口的次数还是较多&#xff0c;这里写下这篇博客&#xff0c;记录一下自己的学习过程。 STM32Cubemx配置&#xff1a; 首先&#xff0c;我们点击左侧的Connectivity选择USART1进行如下配置。 使能串口中断 在左侧的管脚配置上也要做出…...

「兔了个兔」玉兔踏青,纯CSS实现瑞兔日历(附源码)

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…...

第17章 关于局部波动率的一些总结

这学期会时不时更新一下伊曼纽尔德曼&#xff08;Emanuel Derman&#xff09; 教授与迈克尔B.米勒&#xff08;Michael B. Miller&#xff09;的《The Volatility Smile》这本书&#xff0c;本意是协助导师课程需要&#xff0c;发在这里有意的朋友们可以学习一下&#xff0c;思…...

反转链表合并两个有序链表链表分割链表的回文结构相交链表

反转链表来源&#xff1a;杭哥206. 反转链表 - 力扣&#xff08;LeetCode&#xff09;typedef struct ListNode ListNode; struct ListNode* reverseList(struct ListNode* head) {if (headNULL){return NULL;}ListNode* prevhead;ListNode* curhead->next;ListNode* furNUL…...

联想触摸板只能单击,二指三指失效

问题背景 这问题是我笔记本两三年前重装win10系统后出现的&#xff0c;当时有鼠标懒得弄。今天发现没鼠标后&#xff0c;触摸板连二指滑动都没有太麻烦了&#xff0c;所以决定弄一下。 联想笔记本&#xff0c;win10系统重装后出现的问题。 1.鲁大师&#xff0c;联想电脑管家 …...

mysql 删除表卡死,或是截断(truncate)卡死解决办法

利用工具进行truncate表的时候&#xff0c;一直运行&#xff0c;运行了十几分钟也没有成功。中止之后再运行也是一样。但是删除表的数据以及查询表数据都是可以的。猜测是锁死了。 使用 show processlist; 发现Waiting for table metadata lock 问题&#xff1b; mysql> s…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...

JS红宝书笔记 - 3.3 变量

要定义变量&#xff0c;可以使用var操作符&#xff0c;后跟变量名 ES实现变量初始化&#xff0c;因此可以同时定义变量并设置它的值 使用var操作符定义的变量会成为包含它的函数的局部变量。 在函数内定义变量时省略var操作符&#xff0c;可以创建一个全局变量 如果需要定义…...