第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,一经查实,立即删除!

相关文章

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…

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

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

利用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;而数据…

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

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

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

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

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…

CRM项目总结

CRM项目总结 一&#xff1a;开发背景 在公司日益扩大的过程中&#xff0c;不可避免的会伴随着更多问题出现。 对外 &#xff1a; 如何更好的管理客户与公司的关系&#xff1f;如何更及时的了解客户日益发展的需求变化&#xff1f;公司的产品是否真的符合客户需求&#xff1f;以…

js变量和数据类型

转载于:https://www.cnblogs.com/songyinan/p/6181421.html

(九)模板方法模式详解(包含与类加载器不得不说的故事)

作者&#xff1a;zuoxiaolong8810&#xff08;左潇龙&#xff09;&#xff0c;转载请注明出处&#xff0c;特别说明&#xff1a;本博文来自博主原博客&#xff0c;为保证新博客中博文的完整性&#xff0c;特复制到此留存&#xff0c;如需转载请注明新博客地址即可。 模板方法模…

阿里云openapi接口使用,PHP,视频直播

1.下载sdk放入项目文件夹中 核心就是aliyun-php-sdk-core&#xff0c;它的配置文件会自动加载相应的类 2.引入文件 include_once LIB_PATH . ORG/aliyun-openapi/aliyun-php-sdk-core/Config.php; 3.配置客户端对象,需要Access Key ID,Access Key Secret $iClientProfile Defa…

Android之网络编程利用PHP操作MySql插入数据(四)

因为最近在更新我的项目&#xff0c;就想着把自己在项目中用到的一些的简单的与网络交互的方法总结一下&#xff0c;所以最近Android网络编程方面的博文会比较多一些&#xff0c;我尽量以最简单的方法给大家分享&#xff0c;让大家明白易懂。如果有什么不对的地方&#xff0c;还…

【常用网址】——opencv等

opencv官网Releases - OpenCVhttps://opencv.org/releases/

(五):C++分布式实时应用框架——微服务架构的演进

C分布式实时应用框架——微服务架构的演进 技术交流合作QQ群&#xff1a;436466587 欢迎讨论交流 上一篇&#xff1a;(四)&#xff1a;C分布式实时应用框架——状态中心模块 版权声明:本文版权及所用技术归属smartguys团队所有&#xff0c;对于抄袭&#xff0c;非经同意转载等…

Robot Application Builder

软件开发工具包 Robot Application Builder是安装在PC机&#xff08;Windows 2000或Windows XP操作系统&#xff09;上的一种独立开发工具&#xff0c;可用于创建运行于ABB FlexPendant示教器或PC机上的定制化操作界面。为此&#xff0c;该软件包由以下两部分组成&#xff1a;…

asp.net model 验证和取出 ErrorMessage 信息

为什么80%的码农都做不了架构师&#xff1f;>>> public class Users{public int Id { get; set; }public string Name { get; set; }[Required(ErrorMessage "邮箱不能为空")][EmailAddressAttribute(ErrorMessage "邮箱格式不正确")]public…

【pyqt5学习——信号与槽】实例计时器(解决界面卡顿问题)

目录 一、方法一&#xff1a;另开线程 1、什么是信号与槽 1&#xff09;GUI控件&#xff08;信号&#xff09;与槽 2&#xff09;自定义信号与槽 2、实战1&#xff1a;计时器&#xff08;不自定义信号槽和不使用多线程&#xff09; 1&#xff09;界面设计——利用qt-desi…

【数据库学习笔记】——创建数据库连接对象connection

目录 connect函数的参数 创建连接对象连接MySQL代码 连接对象常见属性与方法 事务名词解释 课程视频链接&#xff1a; 第14节 Python操作数据库_哔哩哔哩_bilibili666https://www.bilibili.com/video/BV1q54y147KX?fromsearch&seid968950907021994347&spm_id_from3…

【数据库学习笔记】——cursor游标对象

目录 1、创建cursor对象 2、cursor对象常用方法 3、操作数据库的常见流程&#xff08;五部曲&#xff09; 课程视频链接&#xff1a; 第14节 Python操作数据库_哔哩哔哩_bilibili666https://www.bilibili.com/video/BV1q54y147KX?p2&spm_id_frompageDriver 1、创建cu…