免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/

1. 什么是循环结构

1.1 为什么要学习循环结构

  生活中,有很多“重复的去作某件事”的例子:旋转的钟表指针,滚动的车轮,日复一日的上课等等...同理,在程序中也有很多需要重复去执行的指令,比如现在要求我们输出100句“我爱java!”,按照之前的方式,我们可以这样来编写代码:

public static void main(String[] args){    System.out.println("我爱java!");    System.out.println("我爱java!");    System.out.println("我爱java!");    //此处省略96行...    System.out.println("我爱java!");}

  我们可以发现,用这种方式的确可以完成这件事,但好像也太笨太low了,并且如果现在又要求我们输出1万、1亿行,难道我们要把这条输出语句重复1万、1亿遍吗?显然这是不可能的。那应该怎么办呢?解决方案就是:使用循环结构!

1.2 循环结构的特点和组成

​1.2.1 回到刚才的几个例子,我们来细品一下: 旋转的指针不会无条件的转下去,它必须要"有电";滚动的车轮也不会无休止的滚下去,车子必须要"有油";我们的课也不是天天都要上,前提是"今天不是周末或假期"...所以,我们可能总结出:1.2.2 循环结构的共同点:  1.循环不是无休止进行的,必须满足一定的条件才能继续--我们称它为“循环条件”:比如:"有电"、"有油"、"今天不是周末或假期";  2.循环中重复执行的操作或步骤--我们称它为“循环操作”,比如:"指针旋转一圈"、"车轮滚动一圈"、"我们上课一天"。循环条件和循环操作是循环结构的两大必需的组成部分。1.2.3 在java语言中,常用的循环结构有3种:while循环、do-while循环、for循环。

2.while循环

2.1 什么是while循环

2.1.1 基本语法:

while(循环条件){    //循环操作}

2.1.1 实例:现在我们就可以使用while循环来轻松解决上文的问题:

public static void main(String[] args){    int i=1;    while(i<=100){        System.out.println("我爱java!");        i++;   //注意此条语句    }}

2.1.3 while循环的执行顺序:  1. 初识化循环变量,比如:int i=1;  2. 判断循环条件,如果满足就执行循环操作,不满足就退出循环结构,比如:i<=100;  3. 执行完一次循环操作后,再次进行循环条件的判断,进而决定是否继续执行操作。  4. 注意i++这一步,它是相对隐蔽、但却必不可少的循环操作之一。因为如果没有这一步,那i的值就永远不会改变,i<=100这个循环条件就会一直成立,循环操作就会无限的执行下去...这种循环叫作"死循环",这一步通常称之为循环变量的"迭代"或"更新"。2.1.4   特点: 如果循环条件在第一次就不满足,则循环操作一次也不会执行(比如i的初始值为101),直接跳出循环结构。即:先判断、再执行。

2.2 如何使用while循环

  使用while循环解决问题的一般步骤为:  1. 分析出循环条件和循环操作;  2. 套用while循环的语法写出代码;  3. 检查循环能否正常退出。(注意:避免造成死循环)

2.3 习题:求1-100之间所有奇数的和。

2.3.1 分析:我们先要将1-100之间的数字判断奇偶,如果是奇数就累加即可。所以,重复性的操作,即循环操作就是“将奇数累加”;执行循环操作需要满足的条件,即循环条件就是“操作的数字不超过100”。2.3.2 参考代码:

public static void main(String[] args){    int i=1;            //初始化循环变量    int sum=0;          //总和    while(i<=100){        if(i%2==1){     //如果是奇数            sum += i;   //累加        }        i++;            //更新循环变量    }    System.out.println("1-100之间所有的奇数和为:"+sum);    //2500}

3.程序调试

3.1 什么是程序调试

  生活中的调试一般是指初装设备或设备出现问题时排除故障的过程。同理,在程序设计中,能够满足暂停程序、观察变量、逐条执行语句等功能的工具和方法统称为程序调试。

3.2 如何调试

3.2.1 分析错误,设置断点:在想设置断点的代码行的左边栏双击,就会出现一个圆点(即断点),再次双击可取消断点。也可以右击代码行左侧,在弹出的菜单中选择“Toggle Breakpoint”选项来设置或取消断点。3.2.2 启动调试,单步运行:单击“debug”按钮,即可进入debug视图,按F5可“单步跳入”(Step Into),程序会跳入本行代码的内部,如进入方法的内部;按F6键“单步跳过”(Step Over),程序仅执行本行代码,执行后则跳到下一行代码。

4.do-while循环

4.1 什么是do-while循环

4.1.1 我们知道:如果循环条件一开始就不满足时,while循环就一次也不执行循环操作;所以为了解决这一缺陷,前辈们创造了do-while循环。4.1.2 基本语法:

do{    //循环操作}while(循环条件)

4.1.3 实例:云小图去操场跑步,如果还有力气就一直跑下去。统计:当跑步结束时他跑过的圈数。   1.分析:“跑步一圈”是个重复性的动作,即循环操作;“还有力气”是循环操作能够继续的条件,即循环条件。但是,无论是否“还有力气”,第一圈肯定是要跑的,即无论循环条件是否满足,都要先执行一次循环操作,所以我们应该选用do-while循环来解决这个问题。   2.参考代码:

public static void main(String[] args) {    Scanner input=new Scanner(System.in);    int count=0;    //圈数    String answer;  //回答    do {  //循环操作        count++;    //计数        System.out.println("已跑完第"+count+"圈");        System.out.println("还有力气吗?(y/n)");        answer=input.next();    } while (answer.equals("y"));  //循环条件    System.out.println("一共跑了"+count+"圈");}

4.1.4 执行顺序:  1. 初识化循环变量;  2. 执行一次循环操作;  3. 判断循环条件是否满足,进而决定是否继续执行循环操作。4.1.4 特点: 先执行,再判断。所以循环操作至少会执行一次。

4.2 如何使用do-while

  使用do-while循环的一般步骤为:     1. 分析出循环条件和循环操作;  2. 套用do-while循环的语法写出代码;  3. 检查循环能否正常退出。(注意:避免造成死循环)       

4.3 注意:要在while或do-while的循环操作中更新循环变量,否则容易造成死循环(无限循环)。

4.4 习题:从控制台录入个数不确定的整数,输入0时结束。输入结束后分别统计用户录入的正数和负数的个数。

4.4.1 分析:  1.要统计两种数字的个数,先要创建两个变量用来计数。  2.每得到一个数字,先要判断它们的正负,根据结果将相应的用来计数的变量加1即可。  3.第2步是一个重复性的操作,即循环操作,循环条件为:输入的数字不是0。  4.必须先得到一个数字才能判断,所以我们应该选用do-while循环来解决这个问题。4.4.2 参考代码:

public static void main(String[] args) {    Scanner input=new Scanner(System.in);    int zheng=0;    //正数的个数    int fu=0;       //负数的个数    int num;    do {          System.out.print("请输入一个整数(输入0退出):");        num=input.nextInt();        if(num>0) {zheng++;}        if(num<0) {fu++;}               } while (num!=0);  //循环条件    System.out.println("正数的个数为:"+zheng);    System.out.println("负数的个数为:"+fu);}

4.5 while与do-while的区别

  两者最大的区别即为执行顺序的不同,while循环是先判断再执行,do-while循环是先执行再判断。所以在解决问题时要根据具体情况合理的选用。

5.for循环

5.1 什么是for循环

5.1.1 对于循环次数明确、固定的while循环,可以使用for循环的形式进一步简化代码。5.1.2 基本语法:

for (表达式1;表达式2;表达式3) {    //循环操作}

5.1.3 实例:比如上文中的输出100遍“我爱java!”,它的循环次数是固定的(100次),所以就可以使用for循环来进一步简化代码:

public static void main(String[] args) {    for(int i=1;i<=100;i++) {        System.out.println("我爱java!");    }}

5.1.4 说明:

表达式形式功能举例表达式1赋值语句初始部分,声明循环变量并赋值int i=1表达式2条件语句循环条件i<=100表达式3赋值语句迭代部分(通常用来更新循环变量)i++

5.1.5 执行顺序:    1.执行初始部分(int i=1);    2.判断循环条件 (i<=100);    3.如果循环条件的结果为true,则执行循环体;如果循环条件的结果为false,则退出循环,步骤4、5均不执行;    4.执行迭代部分,更新循环变量的值(i++);    5.依次重复执行步骤2-4,直到退出循环。   

5.2 如何使用for循环

5.2.1 使用for循环结构的步骤和使用while与do-while循环结构一样:    1.找出循环条件和循环操作。    2.套用for循环语法写出代码。    3.检查循环是否能够退出。     

5.2.2 注意:     1. 3个表达式在语法上都是可以省略的,但中间的“;”不能省,并且要注意循环能不能正常结束,避免造成死循环。    2. 在实际开发中,为了提高代码的可读性,尽量不要省略这些表达式。    3. 表达式1可以由多个表达式组成,中间用“,”隔开即可(会在后面的章节用到这种写法)。  4. 对于循环次数确定的情况,通常选用for循环;对于循环次数不固定不明确的情况,通常选用while或do-while循环      

6.跳转语句

  在实际开发中,可能会遇到下面几种特殊的、但很现实的情况:  1. 需要停止整个循环,比如在“车轮一圈圈滚动”的过程中,虽然“还有油”,但车子出了故障,那么剩下的循环操作就不能继续下去了;  2. 需要跳过本次循环,但之后的循环操作还要继续,比如在“日复一日的学习”过程中,虽然某天不是“放假或周末”,但今天我生病了,那就无法上课了,但是明天还要继续;  3. 需要从程序的一部分跳到其他部分;  4. 要解决这些特殊情况,就需要使用跳转语句来完成。Java支持3种形式的跳转:break、 continue和return。

6.1 break语句

6.1.1 我们第一次使用break语句是在switch选择结构中,用来跳出整个switch结构;6.1.2 break还可以用在for/while/do-while循环结构,用来终止整个循环,使程序跳到循环体外的后一条语句。在循环结构中,位于break后的语句将不再执行,循环也全部停止执行。并且它通常与if条件语句一起配合使用,即:当发生了某种特殊情况时就停止整个循环。6.1.3 实例:依次输入5名学生的成绩并计算平均分,如果其中输入了负数,则给出提示并结束程序。

public static void main(String[] args) {    Scanner input = new Scanner(System.in);    int sum=0;              //总分    boolean flag=true;      //创建一个布尔变量,作为是否输入了负数的标记    for(int i=0;i<5;i++) {        System.out.println("请输入第"+(i+1)+"门课程的成绩:");        int score=input.nextInt();        if(score<0) {       //如果成绩为负            flag=false;     //更改标记            break;          //跳出整个循环结构        }        sum+=score;    }    if(flag) {  //根据上文得到的标记来决定:输出平均分或输出错误提示        System.out.println("平均分是:"+sum/5);    }else {        System.out.println("成绩输入错误,循环停止,程序结束!");    }}

6.2 continue语句

6.2.1 continue语句可以用于for循环结构,位于它后面的语句将不再执行,使程序先跳转到迭代部分,然后继续下一次循环(continue的原义正是“继续”)。6.2.2 continue语句也可以用于while和do-while循环结构中,但只能用在循环结构中。6.2.3 实例:输出1~20中所有非4的倍数的数字及其个数。(使用continue实现)  分析:这个问题其实大概有两种思路:  1.正向思维:通过for循环遍历1-20间所有的数字,如果当前这个数字不是4的倍数,则输出它,并计数;  2.反向思维:默认将所有的数字全部输出并计数,如果遇到4的总数,则跳过“输出和计数”的步骤,继续下一个数字。题目要求我们使用continue来实现,所以我们必须使用第2种思路来解决。参考代码如下:

public static void main(String[] args){    int count=0;    for(int i=1;i<=20;i++){        if(i%4==0){continue;}        System.out.print(i+"");        count++;    }    System.out.println();    System.out.println("1-20之间所有非4的倍数的数字的个数为:"+count);  }

6.2.4 continue与break的区别:  1. break用于终止整个循环,程序会直接跳转到循环体外的后一条语句。  2. continue用于跳过本次循环中它后面的语句,进入下一次循环。

6.3 return语句

return语句用来结束当前方法的执行并退出,返回到调用该方法的语句处,具体会在后面的课程中详细讲解。

7.习题:一张纸的厚度大约是0.08毫米,问:将这张纸对折多少次之后能达到珠峰的高度(8848.13米)。

7.1 每对折一次,高度翻倍并计数,这是重复性的动作,所以我们可以考虑使用循环结构来解决,要重复多少次呢,不清楚,所以考虑使用while或do-while来解决。参考代码如下:

public static void main(String[] args) {    double height=0.00008;      //注意要将毫米转化为米    int count=0;                //次数    while (height<8848.13) {        height *= 2;    //翻倍        count++;        //计数    }    System.out.println("对折次数为:"+count);     //27}

7.2 虽然循环的次数不明确,但是我们可以设置一个较大的、足够的值,这样就可以使用for循环的语法来简化代码;另外,当高度值等于或超过8848.13时,使用break来跳出循环即可。参考代码如下:

public static void main(String[] args) {    double height=0.00008;    int count;    for (count = 1; count <= 100; count++) {        height *= 2;        if(height>=8848.13) {            break;        }    }    System.out.println("对折次数为:"+count);     //27}

7.3 以上两种方法都是将对折的次数作为循环变量,但是细想一下:对折后的高度也是一个呈规律性变化的量,并且有初始值和结束值,那么能不能拿它作为循环变量呢?试一下:

public static void main(String[] args) {                int count=0;      for(double height=0.00008;height<8848.13;height *= 2) {        count++;    }    System.out.println("对折次数为:"+count);     //27}

问题解决,并且代码更加的简洁!7.4 经验:对于这一类问题,我们尽量选用“有始有终”的、呈规律性变化的量作为循环变量。比如另一个类似的问题--弹球落地:一个弹球从100米的高度自由落下。每次落地后,它会反弹至原高度的一半后再次落下。问:(1)经过几次反弹后弹球会停止(可将“停止”理解为反弹高度小于1毫米);(2)在这次落地过程中,弹球一共经过了多少路程。建议大家动手试一试。

8.常用单词

1. while:当...的时候2. do:作,干2. index:索引、下标3. bug:虫子、漏洞4. debug:抓虫子、排除漏洞4. equal:相等、等于5. step:步伐、步入6. error:错误、误差7. count:数量、个数7. rate:比例、速度8. customer:消费者、顾客、客户9. break:打断,终止10. flag:旗帜、标记9. continue:继续10. return:返回、回报

免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/

debug跳出循环_Java基础-第04章:循环结构「云图智联」相关推荐

  1. c 结构体在声明时赋值_Java基础知识 初识Java 循环结构进阶 数组 数据类型 各种运算符...

    今天给大家带来的是初级Java基础部分的知识:包括初始Java.变量.常量.数据类型.运算符.各种选择结构.循环结构.数组等Java的基础语法部分!最后还有****循环结构的进阶****,步骤超详细, ...

  2. c语言第四章循环程序设计,C语言程序设计教程第4章-循环结构程序设计

    <C语言程序设计教程第4章-循环结构程序设计>由会员分享,可在线阅读,更多相关<C语言程序设计教程第4章-循环结构程序设计(42页珍藏版)>请在人人文库网上搜索. 1.C语言程 ...

  3. c语言设计第六章答案,c语言第六章 循环结构程序设计(习题册答案)

    第六章 循环结构程序设计 基础练习(A) 一.选择题 1.C语言中while和do-while循环的主要区别是(A). A) do-while的循环体至少无条件执行一次 B) while的循环控制条件 ...

  4. Java 北大青鸟 第一学期 第六章 循环结构(二) 上级练习+课后作业

    第一学期 第六章 循环结构(二) 实例1 实例3 输入任意一个整数,根据这个值输入值为6 示例4 设计客户的年龄层次 实例6 实例7 循环录入会员信息 验证用户信息 鸡兔同笼 男人女人小孩 总结 源码 ...

  5. c语言菜单程序循环结构举例,C语言程序设计课件 第4章 循环结构.ppt

    C语言程序设计课件 第4章 循环结构.ppt 循环嵌套应用举例 [例4.8]从键盘上输入n的值为5,编程打印具有如下规律的对称图形. @ @ @ @ @ @ @ @ @ @ @ @ @ 行号(i)空格 ...

  6. c语言第六章条件型循环结构,C语言课件(第六章 循环结构)

    C语言课件 第六章 循环结构 在许多复杂的问题中,常常需要做大量的类似的计算处理,这些类似的相同的处理过程存在重复性过程,即在某种条件成立的情况下需要处理相同的操作时,就要使用循环结构来完成. 类似于 ...

  7. 第6章 循环结构程序设计

    第6章 循环结构程序设计     声明:文中观点仅代表个人,其中文字.图片未经本人许可,不得部分或全部转载,违者所造成影响后后果自负!联系本人方式:80368704@qq.com QQ:8036870 ...

  8. c语言利用循环结构解决密码转换,C语言课件第六章循环结构.ppt

    C语言课件第六章循环结构 第6章 循环结构程序设计 6.1循环结构的组成 循环结构:描述有规律的重复操作问题. 组成:要重复执行的操作,重复执行所需的条件. 例6.1:求10! . 分析:计算1*2* ...

  9. c语言如何实现一只蜗牛爬的循环,[工程科技]第五章 循环结构程序设计c语言程序设计.ppt...

    [工程科技]第五章 循环结构程序设计c语言程序设计 第5章 循环结构程序设计 while语句 while语句 do while语句 do while语句 do while语句 do while语句 d ...

最新文章

  1. 吴裕雄--天生自然 高等数学学习:高阶偏导数
  2. python操作word填表_Python 自动化办公—Word 文本操作命令
  3. 软件作坊模式工件应用论
  4. mysql left day 7_day7-mysql函数
  5. 为什么TCP连接至少3次握手
  6. MySQL read-c_技术分享 | MySQL C API 参数 MYSQL_OPT_READ_TIMEOUT 的一些行为分析
  7. audio隐藏下载按钮
  8. python开发个人博客_[Web开发] Flask+Python 开发个人博客(一)
  9. 未来茅台酒会怎样跌下神坛?
  10. RedHat搭建DHCP服务器
  11. MDK5 (Keil5)注册机破解
  12. 【开发常识】手机号为什么要隐藏中间的四位数?
  13. 采集百度搜索引擎的10个经典方法
  14. SegmentFault 社区访谈 | 有位公子在奇舞
  15. Redis5.0集群搭建(三主三从)、添加一主一从、JedisCluster连接集群
  16. endnote中文格式参考文献标注
  17. 通过加速或跳过网页视频解决进度条无法拖动问题
  18. 麦肯锡著名的三大结构化工具:金字塔原理、MECE和逻辑树
  19. 2.1、函数的返回值
  20. FPGA自学笔记--串口通信发送多字节数据(verilog版)

热门文章

  1. CM3中数据传输对齐/非对齐方式
  2. maven中scope属性
  3. @Scope(prototype)
  4. 8.0系统机器激活XPOSED框架失败The Xposed framework is not installed
  5. Programmer,Developer,Engineer——软件从业人员的职业规划
  6. Delphi通过管道执行外部命令行程序(cmd)并获取返回结果
  7. laravel 环境自编译过程
  8. Go -- 并发编程的两种限速方法
  9. 后台弹框。刷新不提示确认VB或.NET
  10. FPGA开发全攻略——ISE基本操作