首页 > 其他 > 详细

五、 循环语句

时间:2021-02-07 18:24:46      阅读:24      评论:0      收藏:0      [点我收藏+]

第一章 循环结构

1.1 循环概述

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反
复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下
去,形成死循环。

1.2 循环组成

循环的组成(手写100遍HelloWorld案例): (1)【初始化表达式1】准备工作:笔墨伺候,最优先唯一执行一次的操作
(2)【循环条件2】条件判断:每次书写前,判断一下,要不要写 (3)【循环体3】循环所要进行的操作:手写一个
HelloWorld案例 (4)【步进表达式4】扫尾的工作:每写一次HelloWorld,计数(+1)

第二章 循环语句1--for

2.1 for循环语句介绍

  • 格式:
for(初始化表达式①; 布尔表达式②; 步进表达式④){ 
    循环体③ 
}
//其它语句

 

  • 格式解释
    • 初始化语句: 用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样  
    • 条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去  
    • 循环体语句: 用于表示循环反复执行的内容,简单说就是循环反复执行的事情  
    • 条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去  
  • 执行流程
    • 执行顺序:①②③④>②③④>②③④…②不满足为止。  
    • ①负责完成循环变量初始化  
    • ②负责判断是否满足循环条件,不满足则跳出循环  
    • ③具体执行的语句    
    • ④循环后,循环条件所涉及变量的变化情况

技术分享图片

 

 

   

2.2 for循环练习

  • for循环练习1:在控制台输出10次HelloWorld
public static void main(String[] args) {
        //控制台输出10次HelloWorld,不使用循环
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("-------------------------");
        //用循环改进,循环10次
        // 定义变量从0开始,循环条件为<10
        for (int x = 0; x < 10; x++) {
            System.out.println("HelloWorld" + x);
        }
    }
  • for循环练习2:在控制台输出1-5和5-1的数据
public static void main(String[] args) {
        //需求:输出数据1-5
        for (int i = 1; i <= 5; i++) {
            System.out.println(i);
        }
        System.out.println("--------");

        //需求:输出数据5-1

        for (int i = 5; i >= 1; i--) {
            System.out.println(i);
        }
    }
  • for循环练习3:求1-5之间的数据和,并把求和结果在控制台输出
public static void main(String[] args) {
        //求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
        int sum = 0;
        //从1开始到5结束的数据,使用循环结构完成
        /* sum += i; sum = sum + i;
        第一次:sum = sum + i = 0 + 1 = 1;
        第二次:sum = sum + i = 1 + 2 = 3;
        第三次:sum = sum + i = 3 + 3 = 6;
        第四次:sum = sum + i = 6 + 4 = 10;
        第五次:sum = sum + i = 10 + 5 = 15; */
        for (int i = 1; i <= 5; i++) {
            //将反复进行的事情写入循环结构内部
            // 此处反复进行的事情是将数据 i 加到用于保存最终求和的变量 sum 中
            sum += i;
        }
    }

 

 

  • 本题要点
    • 今后遇到的需求中,如果带有求和二字,请立即联想到求和变量  
    • 求和变量的定义位置,必须在循环外部,如果在循环内部则计算出的数据将是错误的  
  • for循环练习4:求1-100之间的偶数和,并把求和结果在控制台输出
public static void main(String[] args) {
        //求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
        int sum = 0;
        //对1-100的数据求和与1-5的数据求和几乎完全一样,仅仅是结束条件不同
        for (int i = 1; i <= 100; i++) {
            //对1-100的偶数求和,需要对求和操作添加限制条件,判断是否是偶数
            if (i % 2 == 0) {
                sum += i;
            }
        }
        //当循环执行完毕时,将最终数据打印出来 
        System.out.println("1-100之间的偶数和是:" + sum);
    }
  • for循环练习5:在控制台输出所有的“水仙花数”
    • 解释:什么是水仙花数?  
      • 水仙花数,指的是一个三位数,个位、十位、百位的数字立方和等于原数    
      • 例如 153 3*3*3 + 5*5*5 + 1*1*1 = 27 + 125 + 1 = 153    
    • 思路:  
      • 获取所有的三位数,准备进行筛选,最小的三位数为100,最大的三位数为999,使用for循环获取
      • 获取每一个三位数的个位,十位,百位,做if语句判断是否是水仙花数

 

public static void main(String[] args) {
        //输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束
        for (int i = 100; i <= 999; i++) {
            //在计算之前获取三位数中每个位上的值
            int ge = i%10;
            int shi = i/10%10;
            int bai=i/10/10%10;

            //判定条件是将三位数中的每个数值取出来,计算立方和后与原始数字比较是否相等
            if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) {
                //输出满足条件的数字就是水仙花数
                System.out.println(i);
            }
        }
    }

第三章 循环语句2--while

3.1 while循环语句介绍

  • while循环语句格式:
初始化表达式① 
while(布尔表达式②){ 
    循环体③ 
    步进表达式④ 
}
//其它语句
  • 执行流程
    • 执行顺序:①②③④>②③④>②③④…②不满足为止。  
    • ①负责完成循环变量初始化。
    • ②负责判断是否满足循环条件,不满足则跳出循环。  
    • ③具体执行的语句。  
    • ④循环后,循环变量的变化情况。  

 

技术分享图片

 

 

 

3.2 while循环练习

  • while循环练习1:在控制台输出10次HelloWorld
public static void main(String[] args) {
        //for循环实现打印10次HelloWorld 
        for (int i = 1; i <= 10; i++) {
            System.out.println("HelloWorld");
        }
        //while循环实现打印10次HelloWorld 
        // 定义初始化变量 
        int i = 1; //循环条件<=10 
        while (i <= 10) {
            System.out.println("HelloWorld"); //步进 
            i++;
        }
    }
  • while循环练习2:珠穆朗玛峰
  • 需求:世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度,是0.1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度?
  • 思路:
    • 定义计数器变量,准备用于统计次数  
    • 定义纸张的厚度,和珠穆朗玛峰的高度,注意单位换算  
    • 编写while循环的判断条件,当纸张厚度小于等于珠穆朗玛峰的高度,说明循环可以继续,循环  
    • 内部纸张*=2  
    • 循环中每一次折完,计数器增长一次,循环结束后打印计数器  
public static void main(String[] args) {
        //定义一个计数器,初始值为0
        int count = 0;
        //定义纸张厚度
        double paper = 0.1;
        //定义珠穆朗玛峰的高度
        int zf = 8844430;

        //因为要反复折叠,所以要使用循环,但是不知道折叠多少次,这种情况下更适合使用while循环
        // 折叠的过程中当纸张厚度大于珠峰就停止了,因此继续执行的要求是纸张厚度小于珠峰高度

        while (paper <= zf) {
            //循环的执行过程中每次纸张折叠,纸张的厚度要加倍
            paper *= 2;
            //在循环中执行累加,对应折叠了多少次
            count++;
        }
        //打印计数器的值 
        System.out.println("需要折叠:" + count + "次");
    }

 

 

第四章 循环语句3--do-while

4.1 do-while循环语句介绍

  • do...while循环格式
初始化表达式① 
do{ 
    循环体③ 
    步进表达式④ 
}while(布尔表达式②);
 //其它语句
  • 执行流程
    • 执行顺序:①③④>②③④>②③④…②不满足为止。  
    • ①负责完成循环变量初始化。
    • ②负责判断是否满足循环条件,不满足则跳出循环。  
    • ③具体执行的语句  
    • ④循环后,循环变量的变化情况  

 

 技术分享图片

4.2 do-while练习

  • do-while循环练习1:在控制台输出10次HelloWorld

 

public static void main(String[] args) {

        int x=1;
        do{
            System.out.println("helloworld!");
            x++;
        }while(x<=10);
    }

 

do...while循环的特点:无条件执行一次循环体,即使我们将循环条件直接写成false,也依然会循环一次。这样
的循环具有一定的风险性,因此初学者不建议使用do...while循环。
public static void main(String[] args) {
        do{
            System.out.println("无条件执行一次");
        }while (false);
    }

 

第五章 循环语句其它知识

5.1 循环语句的区别

  • 三种循环的区别
    • for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
    • do...while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
  • for循环和while的区别
    • 控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以,继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。  
    • 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
    • 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用
  • 三种循环的区别总结
    • 1.建议使用的顺序:for,while,do-while  
    • 2.循环次数确定的话,建议使用for,循环次数不确定建议使用while  
    • 3.do-while循环来讲的话,至少执行一次  
    • 4.while和do-while循环而言,循环结束后,初始化条件中定义的变量,可以继续使用, 但是for循环的不能使用(在for循环内部定义初始化语句)

5.2 死循环

  • 死循环:也就是循环中的条件永远为true,死循环的是永不结束的循环。例如:while(true){}。
在后期的开发中,会出现使用死循环的场景,例如:我们需要读取用户输入的输入,但是用户输入多少数据我们
并不清楚,也只能使用死循环,当用户不想输入数据了,就可以结束循环了,如何去结束一个死循环呢,就需要
使用到跳出语句了。
  • 死循环(无限循环)的三种格式
    • for(;;){}  
    • while(true){}    
    • do {} while(true);  

 

5.3 经验分享

1.问题展示 

在for循环外使用for循环中定义的变量i报错

 技术分享图片

 

2.问题产生原因

根据问题的提示: Cannot resolve symbol ‘i‘ 无法解析符号“i”
变量的作用域在变量所在的大括号{ }的范围内有效,出了变量的作用域,变量就在内存中消失了
在for循环中定义的变量i的作用域在for循环的大括号{ }范围内有效,出了for的{ },就出了变量i的作用域
所以我们无法找打变量i就会报错

3.问题解决办法

可以提高变量i的作用域,把变量i定义在for循环的外边,这样变量i的作用域就在整个main方法中有效
在main方法中的任意位置都可以使用变量i

 技术分享图片

 

for循环最后一次循环i=10,10不小于10,循环结束,所以程序的执行结果打印变量i的值为10
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

五、 循环语句

原文:https://www.cnblogs.com/lddStuy/p/14385891.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!