【JavaSE】逻辑控制语句
文章目录
- 一. 顺序结构
- 二. 分支结构
- 1. if 语句
- 2. switch 语句
- 3、循环结构
- 3.1 while 循环
- 3.2 do while 循环
- 3.3 for 循环
- 3.4 break 和 continue
- 三. 输入输出
- 1. 输出到控制台
- 2. 从键盘输入
一. 顺序结构
顺序结构比较简单,即程序按照代码书写的顺序一行一行执行下去。
如果调整代码的书写顺序,则执行顺序也发生变化:

二. 分支结构
1. if 语句
if 语句的基本语法形式包括以下三种:

代码示例
1、判定一个数字是奇数还是偶数
public static void main(String[] args) {int num = 13;if (num % 2 == 0) {System.out.println("偶数");} else {System.out.println("奇数");}
}
2、判定一个整数是正数还是负数
public static void main(String[] args) {int num = -10;if (num > 0) {System.out.println("num 是正数");} else if (num < 0) {System.out.println("num 是负数");} else {System.out.println("num 是0");}
}
3、判定某一年份是否是闰年
public static void main(String[] args) {int year = 2023;if (year%4 == 0 && year%100 != 0 || year%400 == 0) {System.out.println("是闰年");} else {System.out.println("不是闰年");}
}
注意事项
1、悬垂 else 问题
- if / else 语句中可以不加花括号,此时只能匹配一条语句

- 不加花括号时 else 总是和最近的 if 匹配

2、代码风格问题

3、分号问题
此处多写了一个分号,导致分号成为了 if 语句的语句体,而 { } 中的代码已经成为了和一个 if 无关的代码块,此时不论 if 成立于否 { } 代码块里的代码都会执行:
int x = 20;
if (x == 10); {System.out.println("hehe");
}
// 运行结果
hehe
2. switch 语句
语法格式如下:
switch(整数|枚举|字符|字符串) {case 内容1: {内容满足时执行语句;[break;]}case 内容2: {内容满足时执行语句;[break;]}...default: {内容都不满足时执行语句;[break;]}
}
几点说明
- 根据 switch 中值的不同,会执行对应的 case 语句。遇到 break 就会结束该 switch 语句。
- 如果 switch 中的值没有匹配的 case,就会执行 default 中的语句。
- 建议一个 switch 语句最好都要带上 default
- 注意 long、float、double 和 boolean 这几个基本类型的值不能做 switch 的参数。
代码示例
根据 day 的值输出星期几
int day = 3;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("输入有误");break;}
}
3、循环结构
3.1 while 循环
循环条件为 true,则执行循环语句,否则结束循环。语法格式如下:
while(布尔表达式){循环语句;
}
注意事项
- 和 if 类似,while 下面的语句可以不写 { } ,但是不写的时候只能匹配一条语句。建议还是加上 { }
- 和 if 类似,while 后面的 { 建议和 while 写在同一行
代码示例
1、打印 1 - 10 的数字
int num = 1;
while(num <= 10){System.out.println(num++);
}
2、计算 1 - 100 的和
int num = 1;
int sum = 0;
while(num <= 100){sum += num;num += 1;
}
System.out.println(sum);
3、计算 5 的阶乘
int num = 1;
int ret = 1;
while(num <= 5){ret *= num;num += 1;
}
System.out.println(ret);
4、计算 1! + 2! + 3! + 4! + 5!
int num = 1;
int sum = 0;
// 外层循环求阶乘的和
while(num <= 5){// 那内层循环求每一个数的阶乘int tmp = 1;int fac = 1;while(tmp <= num){fac *= tmp;tmp += 1;}sum += fac;num += 1;
}
// 最后输出结果
System.out.println(sum);
3.2 do while 循环
语法格式如下,注意最后 while 后面要加个分号
do{循环语句;
}while(循环条件);
do while 不论条件成立与否,必定先执行一次循环语句,再判定循环条件:

3.3 for 循环
语法格式如下:
for(初始语句; 循环条件; 更新语句) {循环体;
}
相比于 while 循环,for 循环将初始语句、循环条件 和 更新语句合并在一起,这样写代码时不容易遗漏。
注意事项
- 和 if 类似,for 下面的语句可以不写 { } ,但是不写的时候只能支持一条语句。建议还是加上 { }。
- 和 if 类似,for 后面的 { 建议和 while 写在同一行。
- 建议有确定的循环次数时用 for;必须先执行一次循环体时用 do while;其他情况用 while。
代码示例
1、打印 1 - 10 的数字
for(int i = 0; i <= 10; ++i) {System.out.println(i);
}
2、计算 1 - 100 的和
int sum = 0;
for(int i = 0; i <= 100; ++i) {sum += i;
}
System.out.println(sum);
3、计算 5 的阶乘
int ret = 1;
for(int i = 1; i <= 5; ++i){ret *= i;
}
System.out.println(ret);
4、计算 1! + 2! + 3! + 4! + 5!
int sum = 0;
for(int i = 1; i <= 5; ++i){int fac = 1;for(int j = 1; j <= i; ++j){fac *= j;}sum += fac;
}
System.out.println(sum);
3.4 break 和 continue
break:执行此语句时,退出匹配最近的循环。
continue:执行此语句时,会立刻进入下次循环(判定循环条件)。
注意:break 和 continue 都必须用在循环中【特殊:beak 还可以用在 switch 中】,二者不适用于 if 语句。
三. 输入输出
1. 输出到控制台
Java 中常用输出语句有以下三种形式:
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.println(msg);// 输出一个字符串, 带换行
System.out.printf(format, msg);// 格式化输出
说明:
- println 输出的内容自带 \n,print 不带 \n
- printf 的格式化输出方式和 C 语言的 printf 是基本一致的
2. 从键盘输入
我们在做 OJ 时经常要用到从键盘输入 n 组数据,模板大致如下:

注意事项
- 使用 Scanner 需要导入 util 包
- 当循环输入多个数据的时候,使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z,Linux / Mac 上使用 ctrl +d)
相关文章:
【JavaSE】逻辑控制语句
文章目录一. 顺序结构二. 分支结构1. if 语句2. switch 语句3、循环结构3.1 while 循环3.2 do while 循环3.3 for 循环3.4 break 和 continue三. 输入输出1. 输出到控制台2. 从键盘输入一. 顺序结构 顺序结构比较简单,即程序按照代码书写的顺序一行一行执行下去。 …...
Motionbuilder系统文件说明
安装路径 Motionbuilder 默认的安装路径在 C:\Program Files\Autodesk\MotionBuilder\ 用户数据(user data) 位于安装路径下的 bin\config 非管理员用户的配置文件路径 Motionbuilder会将配置文件备份到 \Users[user]\AppData\Local\Autodesk[MotionBuilder] 当用户第一次打开…...
【我的Android开发】AMS中Activity栈管理
概述 Activity栈管理是AMS的另一个重要功能,栈管理又和Activity的启动模式和startActivity时所设置的Flag息息相关,Activity栈管理的主要处理逻辑是在ActivityStarter#startActivityUnchecked方法中,本文也会围绕着这个方法进进出出…...
C++源程序的构成————学习笔记
以下内容为,在学校上课时的课堂总结,偶尔我也会扩展一些内容内容仅供参考,欢迎大佬的指正简单的C程序#include <iostream> using namespace std;int main() {int x0;int y 0;cout << "请输入x,y的值"<<endl;cin…...
Spark Catalyst
Spark Catalyst逻辑计划逻辑计划解析逻辑计划优化Catalyst 规则优化过程物理计划Spark PlanJoinSelection生成 Physical PlanEnsureRequirementsSpark SQL 端到端的优化流程: Catalyst 优化器 : 包含逻辑优化/物理优化Tungsten : Spark SQL的优化过程 : 逻辑计划 …...
element 远程搜索下拉加载
created() { this.getList(); this.getGroupList(); }, directives: { /** 下拉框懒加载 */ “el-select-loadmore”: { bind(el, binding) { const SELECTWRAP_DOM el.querySelector( “.el-select-dropdown .el-select-dropdown__wrap” ); SELECTWRAP_DOM.addEventListener…...
空间复杂度与顺序表的具体实现操作(1)
最近更新的少,主要是因为参加了ACM竞赛空间复杂度空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用存储空间大小的量度 。空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量…...
【springmvc】Rest ful风格
RESTful 1、RESTful简介 REST:Representational State Transfer,表现层资源状态转移。 a>资源 资源是一种看待服务器的方式,即,将服务器看作是由很多离散的资源组成。每个资源是服务器上一个可命名的抽象概念。因为资源是一…...
华为OD机试真题Python实现【用户调度】真题+解题思路+代码(20222023)
用户调度 题目 在通信系统中有一个常见的问题是对用户进行不同策略的调度,会得到不同系统消耗的性能。 假设由N个待串行用户,每个用户可以使用A/B/C三种不同的调度策略。 不同的策略会消耗不同的系统资源,请你根据如下规则进行用户调度,并返回总的消耗资源数。 规则是: …...
JavaSE学习笔记总结day19
今日内容 二、线程安全的集合 三、死锁 四、线程通信 五、生产者消费者 六、线程池 零、 复习昨日 创建线程的几种方式 1) 继承 2) 实现Runnable 3) callable接口 Future接口 4) 线程池 启动线程的方法 start() 线程的几种状态 什么是线程不安全 setName getName Thread.curr…...
FreeSql使用
目的: 1.方库分表 2.主从分离 3.分布式事务 过程: 官网:指南 | FreeSql 官方文档 1.Startup.cs 添加配置(本地数据库MySql) ConfigureServices: Func<IServiceProvider, IFreeSql> fsql r >{IFreeSql …...
Hadoop集群搭建,基于3.3.4hadoop和centos8【图文教程-从零开始搭建Hadoop集群】,常见问题解决
Hadoop集群搭建,基于3.3.4hadoop和centos8【小白图文教程-从零开始搭建Hadoop集群】,常见问题解决Hadoop集群搭建,基于3.3.4hadoop1.虚拟机的创建1.1 第一台虚拟机的创建1.2 第一台虚拟机的安装1.3 第一台虚拟机的网络配置1.3.1 主机名和IP映…...
UE4 材质学习 (焚烧材质)
效果步骤随便从网上下载一张图片(地址:链接/链接),导入UE中新建一个材质函数这里命名为“E_Function”双击打开该材质函数,由于需要输出变发光和变透明两种效果,因此这里需要两个输出节点:分别命…...
【c++】STL常用算法2—常用查找算法
文章目录常用查找算法findfind_ifadjacent_findbinary_searchcountcount_if常用查找算法 算法简介: find//查找元素 find_if//按条件查找元素 adjacent_find//查找相邻重复元素 binary_search//二分查找法 count//统计元素个数 count_if//按条件统计元素个数find …...
史上最全最详细的Java架构师成长路径图,程序员必备
从新手码农到高级架构师,要经过几步?要多努力,才能成为为人倚重的技术专家?本文将为你带来一张程序员发展路径图,但你需要知道的是,天下没有普适的道理,具体问题还需具体分析,实践才…...
第五章 事务管理
1.事务概念 *什么是事务:事务是数据库操作最基本单元,逻辑上是一组操作,要么都成功,要么都失败 *事务的特性(ACID):原子性、隔离性、一致性、持久性 2.搭建事务操作环境 *模拟场景ÿ…...
Redis:主从同步
Redis:主从同步一. 概述二. 原理(1) 全量同步(2) 增量同步(3) 优化Redis主从集群三. 总结一. 概述 引入: Redis主从集群采用一个Master负责写,多个Slave负责读的方式(读多写少),那么如何让读取数据时多个从…...
Unity Animator.Play(stateName, layer, normalizedTime) 播放动画函数用法
原理 接口: public void Play(string stateName, int layer -1, float normalizedTime float.NegativeInfinity);参数含义stateName动画状态机的某个状态名字layer第几层的动画状态机,-1 表示播放第一个状态或者第一个哈希到的状态normalizedTime从s…...
python学习——【第三弹】
前言 上一篇文章 python学习——【第二弹】中学习了python中的运算符内容,这篇文章接着学习python中的流程控制语句。 流程控制指的是代码运行逻辑、分支走向、循环控制,是真正体现我们程序执行顺序的操作。流程控制一般分为顺序执行、条件判断和循环控…...
科技云报道:AI大模型背后,竟是惊人的碳排放
科技云报道原创。 自从ChatGPT这样的大型语言模型在全球引起轰动以来,很少有人注意到,训练和运行大型语言模型正在产生惊人的碳排放量。 虽然OpenAI和谷歌都没有说过他们各自产品的计算成本是多少,但据第三方研究人员分析,ChatG…...
AI驱动终端交互:用自然语言指挥命令行的新范式
1. 项目概述:一个AI驱动的终端交互新范式最近在终端工具圈里,一个名为“yai”的项目引起了我的注意。它不是一个简单的命令行美化工具,也不是一个传统的终端复用器。简单来说,yai是一个由 AI 驱动的、旨在彻底改变你与终端交互方式…...
【独家首发】DeepSeek-V2模型GPU利用率可视化方案:仅需3个自定义Metrics,告别盲调参数
更多请点击: https://intelliparadigm.com 第一章:DeepSeek Grafana可视化 DeepSeek 是一款高性能、低延迟的开源时序数据引擎,其原生支持 Prometheus 兼容指标暴露。将 DeepSeek 与 Grafana 集成,可实现对模型推理吞吐、GPU 显存…...
OpenArk:Windows系统安全检测的终极完整解决方案指南 [特殊字符]️
OpenArk:Windows系统安全检测的终极完整解决方案指南 🛡️ 【免费下载链接】OpenArk The Next Generation of Anti-Rookit(ARK) tool for Windows. 项目地址: https://gitcode.com/GitHub_Trending/op/OpenArk OpenArk是一款强大的Windows开源反R…...
如何用嘎嘎降AI处理理工科论文:公式图表密集的理工科毕业论文降AI免费完整操作流程
如何用嘎嘎降AI处理理工科论文:公式图表密集的理工科毕业论文降AI免费完整操作流程 帮三个不同学校的同学处理过论文降AI问题,每次情况不完全一样,但流程基本是固定的。 主推工具:嘎嘎降AI(www.aigcleaner.com&#…...
5分钟快速掌握:Sonar CNES Report代码质量报告生成终极指南
5分钟快速掌握:Sonar CNES Report代码质量报告生成终极指南 【免费下载链接】sonar-cnes-report Generates analysis reports from SonarQube web API. 项目地址: https://gitcode.com/gh_mirrors/so/sonar-cnes-report 你是否曾为向团队展示代码质量数据而烦…...
ARM多核架构中MPIDR寄存器详解与应用实践
1. ARM多核架构与MPIDR寄存器概述在现代ARM多核处理器设计中,处理器亲和性(Processor Affinity)是实现高效任务调度的基础机制。作为系统级程序员或内核开发者,理解MPIDR(Multiprocessor Affinity Register)…...
通过Taotoken为OpenClaw配置自定义模型供应商的详细步骤
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过Taotoken为OpenClaw配置自定义模型供应商的详细步骤 OpenClaw是一个流行的AI智能体开发框架,它允许开发者灵活地配…...
ESP32-S3-DevKitC-1 v1.8开箱实测:从驱动安装到‘Hello World’串口打印全记录
ESP32-S3-DevKitC-1 v1.8实战指南:从开箱到首个串口通信项目 第一次拿到ESP32-S3-DevKitC-1开发板时,那种既兴奋又略带忐忑的心情记忆犹新。作为乐鑫科技推出的新一代Wi-Fi蓝牙双模开发板,ESP32-S3系列在性能和外设支持上都有显著提升&#x…...
从零解构:BUUCTF“吹着贝斯扫二维码”中的隐写与编码链
1. 题目背景与核心挑战 第一次看到BUUCTF这道"吹着贝斯扫二维码"的题目时,我盯着那堆杂乱的文件陷入了沉思。这道题完美展现了CTF比赛中典型的"隐写多层编码"组合拳——就像侦探破案需要同时处理物证和密码本。题目给出的初始材料是一个加密的f…...
解决claude code频繁封号问题转向taotoken稳定服务的实践
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 解决Claude Code频繁封号问题转向Taotoken稳定服务的实践 1. 问题背景:开发者面临的稳定性与成本挑战 许多开发者在日…...
