编程之舞:流程控制乐章
流程控制语句
- 1. 复合语句
- 2. 条件语句
- 2.1 if条件语句
- 2.2 switch多分支语句
- 3. 循环语句
- 3.1 while循环语句
- 3.2 do...while循环语句
- 3.3 for循环语句
- 4. 循环控制
- 4.1 break语句
- 4.2 continue语句
- 5. 实践与练习
1. 复合语句
复合语句是由一对花括号括起来的语句块,可以包含多个语句。一般用于控制流程的执行顺序。
示例代码:
public class CompoundStatementExample {public static void main(String[] args) {int a = 5;int b = 10;// 复合语句开始{int c = a + b;System.out.println("c = " + c);}// 复合语句结束// 其他语句System.out.println("a = " + a);System.out.println("b = " + b);}
}
代码运行结果:
c = 15
a = 5
b = 10
代码分析:
- 复合语句中的变量
c是局部变量,只在复合语句的作用域内有效。 - 其他语句中的变量
a和b是全局变量,在整个main函数的作用域内有效。
2. 条件语句
条件语句用于根据条件的不同来执行不同的代码块。
2.1 if条件语句
if语句根据给定的条件判断是否执行特定的代码块。
示例代码:
public class IfStatementExample {public static void main(String[] args) {int x = 10;if (x > 5) {System.out.println("x大于5");} else {System.out.println("x小于等于5");}}
}
代码运行结果:
x大于5
代码分析:
- 如果
x的值大于5,则执行if条件语句中的代码块,否则执行else中的代码块。
2.2 switch多分支语句
switch语句根据给定的表达式的值,从多个选项中选择一个分支执行。
示例代码:
public class SwitchStatementExample {public static void main(String[] args) {int day = 3;String dayOfWeek;switch (day) {case 1:dayOfWeek = "星期一";break;case 2:dayOfWeek = "星期二";break;case 3:dayOfWeek = "星期三";break;default:dayOfWeek = "未知";break;}System.out.println("今天是" + dayOfWeek);}
}
代码运行结果:
今天是星期三
代码分析:
- 根据
day的值,选择相应的分支执行。如果找不到匹配的分支,则执行default分支。
3. 循环语句
循环语句用于重复执行一段代码,直到给定的条件不再满足为止。
3.1 while循环语句
while循环语句在执行循环体之前先判断条件是否成立,如果条件成立,则执行循环体。
示例代码:
public class WhileLoopExample {public static void main(String[] args) {int i = 1;while (i <= 5) {System.out.println("i = " + i);i++;}}
}
代码运行结果:
i = 1
i = 2
i = 3
i = 4
i = 5
代码分析:
- 在每次循环开始时,先判断
i <= 5的条件是否成立。 - 如果条件成立,则执行循环体中的代码,然后将
i的值加1。 - 循环会一直执行,直到条件不再满足为止。
3.2 do…while循环语句
do...while循环语句先执行一次循环体,再判断条件是否成立,如果条件成立,则继续执行循环体。
示例代码:
public class DoWhileLoopExample {public static void main(String[] args) {int i = 1;do {System.out.println("i = " + i);i++;} while (i <= 5);}
}
代码运行结果:
i = 1
i = 2
i = 3
i = 4
i = 5
代码分析:
- 在每次循环开始时,先执行循环体中的代码。
- 然后判断
i <= 5的条件是否成立。 - 如果条件成立,则继续执行循环体。
- 循环会一直执行,直到条件不再满足为止。
3.3 for循环语句
for循环语句在执行循环之前执行一次初始化语句,然后判断条件是否成立,如果条件成立,则执行循环体,并执行循环后操作。
示例代码:
public class ForLoopExample {public static void main(String[] args) {for (int i = 1; i <= 5; i++) {System.out.println("i = " + i);}}
}
代码运行结果:
i = 1
i = 2
i = 3
i = 4
i = 5
代码分析:
- 在循环开始之前,先执行
int i = 1的初始化语句。 - 每次循环开始时,先判断
i <= 5的条件是否成立。 - 如果条件成立,则执行循环体中的代码,然后执行
i++的循环后操作。 - 循环会一直执行,直到条件不再满足为止。
4. 循环控制
循环控制用于在循环体内部控制循环的执行流程。
4.1 break语句
break语句用于立即退出循环,不再执行循环体中剩余的代码。
示例代码:
public class BreakStatementExample {public static void main(String[] args) {for (int i = 1; i <= 5; i++) {if (i == 3) {break;}System.out.println("i = " + i);}}
}
代码运行结果:
i = 1
i = 2
代码分析:
- 在循环体中使用
if条件判断,当i等于3时,执行break语句退出循环。 - 因此,循环体只会执行两次,输出结果为1和2。
4.2 continue语句
continue语句用于跳过当前循环迭代,继续执行下一次循环迭代。
示例代码:
public class ContinueStatementExample {public static void main(String[] args) {for (int i = 1; i <= 5; i++) {if (i == 3) {continue;}System.out.println("i = " + i);}}
}
代码运行结果:
i = 1
i = 2
i = 4
i = 5
代码分析:
- 在循环体中使用
if条件判断,当i等于3时,执行continue语句跳过当前循环迭代。 - 因此,循环体不会执行输出语句,输出结果为1、2、4、5。
5. 实践与练习
在学习完流程控制和循环控制后,可以尝试以下练习并进行实践:
- 编写一个程序,使用循环语句输出1到100之间所有的偶数。
- 编写一个程序,使用循环语句计算1到10之间所有整数的和并输出结果。
- 编写一个程序,使用循环语句计算阶乘并输出结果。提示:阶乘是指从1乘到给定的数,如4的阶乘为1 x 2 x 3 x 4 = 24。
可以通过编写代码实现以上练习,并运行程序查看结果。
- 编写一个程序,使用循环语句输出1到100之间所有的偶数。
for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {System.out.println(i);}
}
代码分析:
以上代码使用for循环,从1到100遍历所有数字,通过判断i是否能被2整除来判断是否为偶数,如果是偶数则输出。
- 编写一个程序,使用循环语句计算1到10之间所有整数的和并输出结果。
int sum = 0;
for (int i = 1; i <= 10; i++) {sum += i;
}System.out.println("1到10的和为: " + sum);
代码分析:
以上代码使用for循环,从1到10遍历所有整数,将每个整数累加到变量sum中,最后输出sum的值。
- 编写一个程序,使用循环语句计算阶乘并输出结果。
int n = 4; // 计算4的阶乘
int factorial = 1;for (int i = 1; i <= n; i++) {factorial *= i;
}System.out.println(n + "的阶乘为: " + factorial);
代码分析:
以上代码使用for循环,从1到给定的数n遍历,将每个数字相乘并赋值给变量factorial,最后输出factorial的值作为阶乘的结果。在这个例子中,计算的是4的阶乘。
相关文章:
编程之舞:流程控制乐章
流程控制语句 1. 复合语句 2. 条件语句2.1 if条件语句2.2 switch多分支语句 3. 循环语句3.1 while循环语句3.2 do...while循环语句3.3 for循环语句 4. 循环控制4.1 break语句4.2 continue语句 5. 实践与练习 1. 复合语句 复合语句是由一对花括号括起来的语句块,可以…...
ChatGPT是否能够进行情感融合和语气调整?
ChatGPT是一种预训练的通用语言模型,具有很强的文本生成和理解能力。在情感融合和语气调整方面,ChatGPT可以通过特定的技术和训练方法实现一定程度的情感表达和语气调整。下面将详细探讨ChatGPT在情感融合和语气调整方面的应用方法和潜力。 1. **情感融…...
C++--动态规划路径问题
1.不同路径 力扣 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。 现在考虑网格中有障碍物。那么从…...
从实践彻底掌握MySQL的主从复制
目录 一、本次所用结构如图---一主多从级联: 二、IP。 三、配置M1: 四、从库M1S1: 五、从库M2配置: 六、 从库M2S1: 一、本次所用结构如图--- 一主多从级联: 二、IP。这里M1S1和M1S2一样的࿰…...
机器学习深度学习——线性回归的基本元素
回归用来表示输入输出之间的关系。 用实际例子来解释一下线性回归:根据房屋的面积、房龄来估算房屋价格。为了实现这个预测放假的模型,需要收集一个真实的数据集,该数据集包括了房屋的销售价格、面积和房龄。 在机器学习中,这个数…...
K8S初级入门系列之八-网络
一、前言 本章节我们将了解K8S的相关网络概念,包括K8S的网络通讯原理,以及Service以及相关的概念,包括Endpoint,EndpointSlice,Headless service,Ingress等。 二、网络通讯原理和实现 同一K8S集群&…...
分段@Transactional 坑及失效问题
Transactional 背景:在某些情况下,我们需要分段transaction,在最外面没有transaction,里面分成几个transaction,保证分段是成功的。 问题代码: Service public Order getOrder1(String id) {Optional<Or…...
25、matlab里面的10中优化方法介绍——Opt_Golden法(matlab程序)
1.简述 基本思想 黄金分割法也称为 0.618 法,其基本思想是通过取试探点和进行函数值比较,使包含极小点的搜索区间不断缩短以逼近极小值点。适用于确定区间上的任何单谷函数求极小值的问题。 公式推导 设有定义在[ a , b ] [a,b][a,b]上的单谷函数 φ ( …...
点云拟合球体
前言:在很多情况下,需要根据点云来拟合球体,本博文主要介绍各种方法的拟合情况及优缺点,希望对各位小伙伴有所帮助! 目录 1. vtkFitImplicitFunction进行球拟合 2. 四点求解球 1. vtkFitImplicitFunction进行球拟合 …...
基于动态规划(DP)算法的增程式EV能量管理策略研究(MATLAB编程)
文章目录 算法代码仿真结果结果分析算法代码 clc; clear; close all; load CWTVC.mat N=length(T_z); %N=200;load minFuelConsup.txt minFuel_Pe=minFuelConsup(:...
前端知识点视频补充
使用工具: Vscode使用: 需要下载插件:open in browser。这个插件可以快速打开浏览器。 选择文件夹有两种方式:选择打开文件、拖拽方式(这种最方便) 快捷键:快速生成Htm结构文件:…...
python多线程—终止子线程
总体思路 1、获取需要终止的子线程id 2、根据子线程id,终止子线程。 过程 获取子线程id: import threading Thread_id threading.get_ident() # 获取子线程的id值线程终止函数 def async_raise(Thread_id, exctype):"""raises th…...
#P1012. [NOIP2015提高组] 神奇的幻方
题目描述 幻方是一种很神奇的 N \times NNN 矩阵:它由数字 1,2,3, \ldots ,N \times N1,2,3,…,NN 构成,且每行、每列及两条对角线上的数字之和都相同。 当 NN 为奇数时,我们可以通过以下方法构建一个幻方: 首先将 11 写在第一行…...
(学习笔记-IP)Ping的工作原理
Ping是基于ICMP协议工作的,ICMP报文封装在IP包里面,它工作在网络层,是IP协议的助手。 ICMP包头的类型字段,大致可分为两大类: 一类是用于诊断的查询消息,也就是查询报文类型一类是通知出错原因的错误消息&…...
php 进程间通信:管道、uds
1、管道 1.1、管道概念 管道是单向的、先进先出的,它把进程的输出和另一个进程的输入连接在一起。一个进程往管道写入数据,另一个进程从管道读取数据。数据被从管道中读取出来之后,将被删除,其他进程无法在读取到相应的数据。管…...
Stable Diffusion如何生成高质量的图-prompt写法介绍
文章目录 Stable Diffusion使用尝试下效果prompt的编写技巧prompt 和 negative promptPrompt格式Prompt规则细节优化Guidance Scale 总结 Stable Diffusion Stable Diffusion是一个开源的图像生成AI系统,由Anthropic公司开发。它基于 Transformer模型架构,可以通过文字描述生成…...
MySQL 高级SQL语句(一)
目录 一、高级SQL语句(进阶查询) 1.1 select 1.2 distinct 1.3 where 1.4 and 和 or 1.5 in 1.6 between 1.7 通配符 1.8 like 1.9 order by 一、高级SQL语句(进阶查询) 先准备2个表 一个location表: use m…...
SkyWalking链路追踪-技术文档首页
SkyWalking 文档中文版(社区提供) (skyapm.github.io)https://skyapm.github.io/document-cn-translation-of-skywalking/ SkyWalking-基本概念 SkyWalking链路追踪是一个用于分布式系统的性能监控工具,它帮助开发人员了解系统中各组件之间…...
AndroidStudio Memory profiler(内存分析器)
1.Record Java/Kotlin allocations 查看java 层中对象的调用栈和短时间内创建对象的次数。可用于内存抖动快速分析,可用快速查找到该对象的调用栈(等同于mat) 从上图可见,短时间内创建了23个char[] 数组,其中最大的char[] 占用20k, 查看cll stack 调用…...
【C++模板进阶】
目录 一、模板使用时的一个小注意点二、非类型模板参数三、类模板的特化3.1函数模板的特化3.2类模板的特化3.2.1全特化3.2.2偏特化 四、模板的分离编译4.1模板不支持分离编译4.2模板分离编译报错的分析4.2解决方案 五、模板的总结 一、模板使用时的一个小注意点 在使用模板时&…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
