第6章 循环结构

 循环语句: 可以让一部分代码,反复执行 

1.1 循环语句while

while循环:
编写格式:

while(条件){
循环体
}
条件: 当条件是true,就执行循环体,执行完循环体后
程序再次执行while中的条件,如果条件还是true,继续执行循环体
直到条件是false的时候,循环就结束

public class WhileDemo{public static void main(String[] args){//输出 1-4之间的整数//定义变量,整数类型, 循环的条件int i = 1;while( i < 5 ){System.out.println(i);i++;}}

 

在上述代码中,x初始值为1,在满足循环条件x <= 4的情况下,循环体会重复执行,打印x的值并让x进行自增。因此打印结果中x的值分别为1234

大家要注意的是,代码x++用于在每次循环时改变变量x的值,从而达到最终改变循环条件的目的。如果没有这行代码,整个循环会进入无限循环的状态,永远不会结束。

 

1.2 循环语句for

for循环语句是最常用的循环语句,一般用在循环次数已知的情况下。for循环语句的语法格式如下:

for(初始化表达式; 循环条件; 操作表达式){

执行语句

………

}

/*for循环编写格式for(初始化变量 ; 条件 ; 增量){循环体}初始化变量: 定义变量,作用,控制循环的次数条件: 当条件是true,执行循环体,条件是false,结束循环增量: 变量自增情况
*/
public class ForDemo{public static void main(String[] args){//for循环,输出0-10for(int i = 0 ; i < 11 ; i++){System.out.println(i);}}
}

for循环执行示意图如下:

利用for循环累加求和

*利用for循环,计算1+4的结果1 + 2 + 3 + 4 = 101+2的和+31+2+3的和+4
*/
public class ForDemo_1{public static void main(String[] args){// 定义变量,记录求和后的数据int sum = 0;// 利用循环,将变量从1变化到4for(int i = 1 ; i <= 4 ; i++){//对变量进行求和sum = sum + i;}System.out.println(sum);}
}

1.3 循环语句dowhile

do…while循环语句和while循环语句功能类似,其语法结构如下:

do {

执行语句

………

} while(循环条件);

在上面的语法结构中,关键字do后面{}中的执行语句是循环体。do…while循环语句将循环条件放在了循环体的后面。这也就意味着,

循环体会无条件执行一次,然后再根据循环条件来决定是否继续执行。(也就是先做后判断!)不管循环条件是否满足都会执行一次循环体!

do…while循环的执行流程如下图所示

 

基础示例:

*do...while循环编写格式:do{循环体}while(条件);特点: 无条件先执行一次
*/
public class DoWhileDemo{public static void main(String[] args){int i = 0; do{System.out.println(i);i++;}while( i <  5);}
}

接下来使用do…while循环语句来实现打印1~4之间的自然数DoWhileDemo.java

特点:(也就是先做后判断!)不管循环条件是否满足都会执行一次循环体!

public class DoWhileDemo {public static void main(String[] args) {int x = 1; // 定义变量x,初始值为1do {System.out.println("x = " + x); // 打印x的值x++; // 将x的值自增} while (x <= 4); // 循环条件
    }
}

 

我们发现WhileDemo.javaDoWhileDemo.java运行的结果一致,这说明什么呢?这说明do …while循环和while循环能实现同样的功能。

然而在程序运行过程中,这两种语句还是有差别的。如果循环条件在循环语句开始时就不成立,那么while循环的循环体一次都不会执行

do…while循环的循环体还是会执行一次。若将DoWhileDemo.java中的循环条件x<=4改为x < 1

DoWhileDemo.java运行结果会打印x=1,而WhileDemo.java运行结果什么也不会打印。

 

1.4 无限循环

最简单无限循环格式:

while(true){}

for(;;){}

无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环

如下代码是无限循环的几种写法!

 

 

public class WhileForDemo{public static void main(String[] args){//while形式死循环/*while(true){}*///for形式死循环
//        for( ; true ; ){
//            
//        }for(;;){System.out.println("a");    }}
}

1.5 循环嵌套

嵌套循环是指在一个循环语句的循环体中再定义一个循环语句的语法结构。whiledo…whilefor循环语句都可以进行嵌套,并且它们之间也可以互相嵌套,如最常见的在for循环中嵌套for循环,格式如下:

 

外循环,控制的是行数
内循环,控制的是每行的个数

 

 

for(初始化表达式; 循环条件; 操作表达式) {………for(初始化表达式; 循环条件; 操作表达式) {执行语句………}………
}

 

*循环的嵌套: 循环里面还有循环, for形式多for(){for(){}}总的循环次数 =  内循环次数 * 外循环的次数内循环,是外循环的循环体外循环,控制的是行数内循环,控制的是每行的个数
*/
public class ForForDemo{public static void main(String[] args){for(int i = 0 ; i < 9 ; i++){for(int j = 0; j < i+1 ;j++){System.out.print("* ");}System.out.println();}}
}

 

图1-1 运行结果

在上述代码中定义了两层for循环,分别为外层循环和内层循环,外层循环用于控制打印的行数,内层循环用于打印“*”,每一行的“*”个数逐行增加,最后输出一个直角三角形。由于嵌套循环程序比较复杂,下面分步骤进行详细地讲解,具体如下:

第一步,在第3行代码定义了两个循环变量ij,其中i为外层循环变量,j为内层循环变量。

第二步,在第4行代码将i初始化为1,条件i <= 9true,首次进入外层循环的循环体。

第三步,在第5行代码将j初始化为1,由于此时i的值为1,条件j <= itrue,首次进入内层循环的循环体,打印一个“*”。

第四步,执行第5行代码中内层循环的操作表达式j++,将j的值自增为2

第五步,执行第5行代码中的判断条件j<=i,判断结果为false,内层循环结束。执行后面的代码,打印换行符。

第六步,执行第4行代码中外层循环的操作表达式i++,将i的值自增为2

第七步,执行第4行代码中的判断条件i<=9,判断结果为true,进入外层循环的循环体,继续执行内层循环。

第八步,由于i的值为2,内层循环会执行两次,即在第2行打印两个“*”。在内层循环结束时会打印换行符。

第九步,以此类推,在第3行会打印3个“*”,逐行递增,直到i的值为10时,外层循环的判断条件i <= 9结果为false,外层循环结束,整个程序也就结束了。

 

双层for循环示意图:

1.6跳转语句(breakcontinue

break 关键字
作用于循环中,终止循环的作用

 

如下图示例:

 

/*break 关键字作用于循环中,终止循环的作用
*/
public class BreakDemo{public static void main(String[] args){int i = 1;while(i < 2000){if(i == 3){break;}else{System.out.println(i);}i++;}}
}

 

2、 标记 

当break语句出现在嵌套循环中的内层循环时,它只能跳出内层循环

如果想使用break语句跳出外层循环则需要对外层循环添加标记。接下来将ForForDemo.java稍作修改,控制程序只打印4

*”,如下所示。BreakDemo02.java

public class BreakDemo_1{public static void main(String[] args){a:for(int i = 0 ; i < 2; i++){for(int j = 0; j < 5 ;j++){System.out.print("j="+j);break a;}System.out.println("i="+i);}}
}

3、 continue语句

 

continue语句用在循环语句中,它的作用是终止本次循环,执行下一次循环。

 

/*continue 关键字 作用: 在循环中, 终止本次循环,开始下一次循环
*/
public class ContinueDemo{public static void main(String[] args){for(int i = 0 ; i < 10 ; i++){if(i%2==0){continue;}System.out.println(i);}}
}

 

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

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

相关文章

【深度学习】——pytorch搭建模型及相关模型

目录 1、搭建模型的流程 1&#xff09;步骤 2&#xff09;完整代码——手写minist数据集为例&#xff08;这里使用的数据集是自带的&#xff09; 2、搭建模型的四种方法 1&#xff09;方法一——利用nn.Sequential&#xff08;&#xff09; 2&#xff09;方法二——利用co…

ABB robot 与 Fronius 设备 IO

ABB robot 与 Fronius 设备 IO

初次使用cocoapods注意事项

在仅仅用cocoapods时可能会遇到各种各样的错误和问题 这里中总结下: 1.首先使用cocoapods有非常多优点,在github上非常多优秀的开源项目都用到了它;假设你不会使用它,那么非常多优秀的开源项目你下载下来了也发现跑不起来,假设发现有Profile,Profile.lock,Pods等cocoapods相关…

MongoDB复制集技术

为什么使用MongogDB复制集技术? mysql中:一主一从&#xff0c;一主多从结构存在的问题 1、 fileover&#xff08;故障转移&#xff09;a) 选主投票b) 切换 2、 是否对就用透明化 3、 数据补偿的问题a) 两阶段数据补偿 4、 解决方法 mysql中使用MHAVIP b…

Linux文件系统的实现 (图文并茂,比较好)

作者&#xff1a;Vamei 出处&#xff1a;http://www.cnblogs.com/vamei 欢迎转载&#xff0c;也请保留这段声明。谢谢&#xff01; Linux文件管理从用户的层面介绍了Linux管理文件的方式。Linux有一个树状结构来组织文件。树的顶端为根目录(/)&#xff0c;节点为目录&#xff0…

【深度学习】——如何处理输入图像大小不一样的情况

这里一般有常见的几种方法&#xff1a; 1&#xff09;将图像缩放成大小一致后再输入&#xff0c;如RCNN算法 2&#xff09;roi pooling&#xff1a;这里允许输入图像的大小不一样&#xff0c;后续根据指定的固定大小来求解池化的核大小&#xff0c;以此来得到相同大小的特征图&…

ROS探索总结(一)——ROS简介

随着机器人领域的快速发展和复杂化&#xff0c;代码的复用性和模块化的需求原来越强烈&#xff0c;而已有的开源机器人系统又不能很好的适应需求。2010年Willow Garage公司发布了开源机器人操作系统ROS&#xff08;robot operating system&#xff09;&#xff0c;很快在机器人…

微信浏览器取消缓存的方法

摘要:做微信公家号以及调试手机页面的时辰&#xff0c;防止不了页面要跳转到微信阅读器打开&#xff0c;调试阶段&#xff0c;android版微信阅读器一直都默许缓存html静态资本&#xff0c;每一次静态资本变革乃至新内容发布的时辰在微信阅读器上都极有可能不克不及更新&#xf…

【机器视觉】——裂纹检测笔记

目录 传统算法处理裂缝的基本思路&#xff1a; 第一种思路 第二种思路&#xff1a; 第三种思路 CPP代码 halcon代码 python代码 Matlab代码 深度学习缺陷检测 裂缝检测文献 传统算法处理裂缝的基本思路&#xff1a; 第一种思路 1.先转换彩色图为灰度图 2.进行自适应…

利用union判断系统的大小端

int checkCPUendian()//返回1&#xff0c;为小端&#xff1b;反之&#xff0c;为大端&#xff1b; { union{ unsigned int a; unsigned char b; }c; c.a 1; return 1 c.b; }大端模式(Big-endian)&#xff0c;是指数据的高字节保存在内存的低地址中&#xff0c;而数据…

Filter(过滤器) 和 interceptor(拦截器)的区别

Filter&#xff08;过滤器&#xff09; 和 interceptor&#xff08;拦截器&#xff09;的区别 1.拦截器是基于java反射机制的&#xff0c;而过滤器是基于函数回调的。 2.过滤器依赖于Servlet容器&#xff0c;而拦截器不依赖于Servlet容器。 3.拦截器只对Action请求起作用&#…

ROS探索总结(二)——ROS总体框架

一、 总体结构 根据ROS系统代码的维护者和分布来标示&#xff0c;主要有两大部分&#xff1a;&#xff08;1&#xff09;main&#xff1a;核心部分&#xff0c;主要由Willow Garage公司和一些开发者设计、提供以及维护。它提供了一些分布式计算的基本工具&#xff0c;以及整个…

python 阿狸的进阶之路(4)

装饰器 #1、开放封闭原则&#xff1a;对扩展开放&#xff0c;对修改是封闭#2、装饰器&#xff1a;装饰它人的&#xff0c;器指的是任意可调用对象&#xff0c;现在的场景装饰器-》函数&#xff0c;被装饰的对象也是-》函数#原则&#xff1a;1、不修改被装饰对象的源代码 2、不修…

【深度学习】——利用pytorch搭建一个完整的深度学习项目(构建模型、加载数据集、参数配置、训练、模型保存、预测)

目录 一、深度学习项目的基本构成 二、实战&#xff08;猫狗分类&#xff09; 1、数据集下载 2、dataset.py文件 3、model.py 4、config.py 5、predict.py 一、深度学习项目的基本构成 一个深度学习模型一般包含以下几个文件&#xff1a; datasets文件夹&#xff1a;存放…

二叉树的序遍历

时间限制: 1 s空间限制: 32000 KB题目等级 : 白银 Silver题目描述 Description求一棵二叉树的前序遍历&#xff0c;中序遍历和后序遍历 输入描述 Input Description第一行一个整数n&#xff0c;表示这棵树的节点个数。 接下来n行每行2个整数L和R。第i行的两个整数Li和Ri代表编号…

GUI登录界面

在这次的作业中&#xff0c;我先使用单选按钮&#xff0c;输入框&#xff0c;复选框设计了一个简单地登录界面。接着我使用了MouseListener将登陆按钮与下一个“查询界面”连接起来。最后我使用了我们本周所学的JFrame框架与事件处理机制设计了一个简单地界面。我所设计的登录界…

浅谈ROS操作系统及其应用趋势

ROS操作系统是最先由斯坦福开发的开源机器人操作系统&#xff0c;目前由willowgarage公司开发和维护&#xff0c;相关的开发社区也很成熟&#xff08; http://www.ros.org &#xff0c; http://answers.ros.org, http://www.willowgarage.com), 经过几年的发展API也逐渐稳定&a…

Raft学习传送门

Raft官网 官方可视化动画1 官方可视化动画2 论文中文翻译 论文英文地址 Paxos Made Simple论文翻译 Raft理解 技术分享 《分布式一致性raft算法实现原理》 状态机 MIT&#xff1a; raft实现 分布式系统学习2-Raft算法分析与实现 分布式系统MIT 6.824学习资源 知乎大神的&#…

【Python生成器与迭代器的区别】

目录 一、迭代 二、迭代器 1&#xff09;创建迭代器——两种方法 iter&#xff08;&#xff09;方法 利用()和range结合使用 2&#xff09;具体案例 3、生成器 4、二者的异同 1&#xff09;、共同点 2&#xff09;、不同点 a、语法上 b、用法上 一、迭代 首先理解一…

BZOJ4426 : [Nwerc2015]Better Productivity最大生产率

如果一个区间包含另一个区间&#xff0c;那么这两个区间是否在一起的生产率是一样的。 将所有这种包含了其他区间的区间放入数组$b$&#xff0c;其余的放入数组$c$&#xff0c;有多个相同的时候则从$b$移一个到$c$。 那么$c$里所有区间左端点递增&#xff0c;右端点也递增&…