Java学习-流程控制之循环结构(一)

流程控制之循环结构(一)

1.循环结构的概念和分类

(1)循环结构的概念

循环,即事物周而复始的变化。
循环结构,使一部分代码按照次数一定的条件反复执行的一种代码结构。

(2)循环结构的分类

  • for循环
  • while循环
  • do…while循环

2.for 循环

(1)for循环语句

  • 格式:
    for(初始化语句;判断条件语句;控制条件语句) {
     //循环体
    }
  • 执行流程,如下图
    在这里插入图片描述

(2)for循环案例

Demo1
  • 需求:在控制台输出五次HelloWorld
  • 代码演示
/*
    for循环
        格式:
            for(初始化语句; 判断条件语句; 控制条件语句){
                循环体
            }
        执行流程:
            第一次循环:  选执行初始化语句,   然后执行判断条件语句,
                        如果条件不成立,    循环结束
                        如果条件成立,     执行循环体,然后执行控制条件语句,此时,第一次循环执行结束
            第二次循环:  执行判断条件语句
                        如果条件不成立,    循环结束
                        如果条件成立,     执行循环提,然后执行控制条件语句,此时,第一次循环执行结束
            以此类推
 */
public class ForDemo1 {
    public static void main(String[] args) {
        // 需求:打印五次HelloWorld
        for (int i = 1; i <= 5; i++) {
            System.out.println("HelloWorld");
        }
    }
}
  • 运行结果
    在这里插入图片描述
Demo2
  • 需求:打出数字1-5,打出数字5-1
  • 代码演示
public class ForDemo2 {
    public static void main(String[] args) {
        // 需求1:打印1-5之间的数字
        // 方式1:传统做法
        System.out.println(1);
        System.out.println(2);
        System.out.println(3);
        System.out.println(4);
        System.out.println(5);
        System.out.println("----------------------");

        // 通过观察上述的代码,我们发现,输出语句的次数是固定的,只有输出语句里边的内容在发生变化
        // 针对于这种情况,就可以采用for循环来解决
        // 方式2:采用for循环
        for (int i = 1; i <=5; i++) {
            System.out.println(i);
        }

        System.out.println("----------------------");

        // 需求2:打印5-1之间的数字
        for (int i = 5; i >= 1; i--) {
            System.out.println(i);
        }
    }
}
  • 运行结果
    在这里插入图片描述
Demo3
  • 需求:求出1-5之间数字之和
  • 代码演示
public class ForDemo3 {
    public static void main(String[] args) {
        // 需求:计算1-5之间的所有数据之和
        // 1.定义求和变量sum
        int sum = 0;
        // 2.通过for循环获取1-5之间的数据
        for(int i = 1; i <=5; i++) {
            // i记录的就是:1-5之间的所有数字

            // 3.把获取到的数据依次累加给变量sum
            // sum = sum + i;
            sum += i;
        }

        // 4.打印结果
        System.out.println(sum);
    }
}
  • 运行结果
    在这里插入图片描述
Demo4
  • 需求:求出1-100之间偶数和
  • 代码演示
public class ForDemo4 {
    public static void main(String[] args) {
        // 需求:计算1-100之间的所有偶数和
        // 1.定义一个求和变量sum
        int sum = 0;

        // 2.获取1-100之间所有的数据
        for (int i = 1; i <= 100; i++) {
            // 循环体
            // i的值其实就是1-100之间的数字,只要判断i是否是偶数即可
            // 3.判断当前获取到的数据是否是偶数,是就累加
            if (i % 2 == 0) {
                //能走到这里,说明i是偶数,累加即可
                sum += i;
            }
        }
        // 4.打印结果
        System.out.println("sum:" + sum);
    }
}
  • 运行结果
    在这里插入图片描述
Demo5
  • 需求:在控制台输出所有的“水仙花数”
  • 代码演示
public class ForDemo5 {
    public static void main(String[] args) {
        /*
            需求:打印所有的水仙花数
                水仙花数解释:指的是一个三位数,其各位数字的立方和等于它本身,例如:
                1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 =153
         */
        // 1. 通过for循环,获取所有的三位数
        for(int  i = 100; i < 1000; i++) {
            // i表示就是所有的三位数
            // 2. 获取该数据的个位,十位,百位数字
            int ge = i % 10;
            int shi = i/10%10;
            int bai = i/10/10%10;

            // 3. 判断改数字是否是水仙花数,如果是,直接打印即可
            if (ge*ge*ge + shi*shi*shi +bai*bai*bai == i){
                // 能走到这里说明i是水仙花数
                System.out.println(i);
            }
        }
    }
}
  • 运行结果
    在这里插入图片描述
Demo6
  • 需求:统计所有的“水仙花数”的个数
  • 代码演示
public class ForDemo6 {
    public static void main(String[] args) {
        // 需求:打印所有的水仙花数的个数
        // 1. 定义一个计数器,用来记录水仙花数的个数
        int count = 0;
        // 2. 获取所有的三位数
        for (int i = 100 ; i < 1000; i++) {
            // i记录的就是所有的三位数
            // 3. 获取到该数字的个位,十位,百位
            int ge = i % 10;
            int shi = i / 10 % 10;
            int bai = i / 10 / 10 % 10;
            // 4.判断改数字是否是水仙花数,如果是,计数器自增
            if (ge*ge*ge + shi*shi*shi + bai*bai*bai == i){
                // 能走到这里,说明i是一个水仙花数
                // count = count + 1;
                // count++;
                ++count;
            }
        }

        // 5. 打印计数器的结果即可
        System.out.println(count);
    }
}
  • 运行结果
    在这里插入图片描述

3.while循环

(1)while循环语句格式

  • 格式
    初始化语句;
    while(判断条件语句) {
     循环体语句
     控制条件语句
    }
  • 注意事项:
    初始化语句可以省略
    控制条件语句可以省略
  • 执行流程,如下图
    在这里插入图片描述

(2)while循环案例

Demo1
  • 需求:使用while循环在控制台输出五次HelloWorld
  • 代码演示
public class WhileDemo1 {
    public static void main(String[] args) {
        // 需求:打印五次HelloWorld
        // 方式一:通过for循环实现
        for (int i = 1; i <= 5; i++) {
            System.out.println("HelloWorld");
        }
        System.out.println("--------------");

        // 方式二:通过while循环实现
        // 初始化语句
        int i = 1;
        // 判断条件语句
        while (i <= 5) {
            // 循环体语句
            System.out.println("HelloWorld");
            // 控制条件语句
            i++;
        }
    }
}
  • 运行结果
    在这里插入图片描述
Demo2
  • 需求:求1-100之间的数据和
  • 代码演示
public class WhileDemo2 {
    public static void main(String[] args) {
        // 需求;计算1-100之间的所有数据之和
        // 1. 定义一个求和变量sum
        int sum = 0;

        // 2. 通过while循环,获取1-100之间所有的数据
        // 初始化语句
        int a = 1;
        // 判断语句
        while (a <= 100){
            // 循环体语句
            // 3. 将获取到的数据累加给变量sum
            sum += a;
            // 控制条件语句
            a++;
        }

        // 4. 将sum的结果打印到控制台上
        System.out.println(sum);
    }
}
  • 运行结果
    在这里插入图片描述

4.do…while循环

(1)do…while循环语句格式

  • 格式
    初始化语句;
    do {
     循环体语句;
     控制调价语句;
    } while(判断条件语句);
  • 注意事项
    while小括号后的分号不可省略
    do…while循环的循环体语句至少执行1遍
  • 执行流程,如下图
    在这里插入图片描述

(2)do…while循环案例

Demo1
  • 需求:用do…while循环模拟:学完一个知识,至少练习1次
  • 代码演示
public class DoWhileDemo {
    public static void main(String[] args) {
        // 1. 定义一个变量,记录练习次数
        int count = 1;
        // 2. 定义一个变量,用来标记是否学会这个知识点,true:学会了 false:没学会
        boolean isOK = false;
        // 3. 在do..while循环中模拟这个动作
        do {
            // 输出练习次数
            System.out.println("正在进行第" + count + "次练习");
            // 判断练习次数,看是否不小于三,如果条件成立,表示学会了
            if (count >= 3) {
                // 能进来,说明学会了
                // 将boolean类型变量的值变为:true
                isOK = true;
            }
            // 不管是否学会。每练习一次,次数要+1
            count++;
        }while (!isOK);
    }
}
  • 运行结果
    在这里插入图片描述

5,三种循环的区别

(1)格式的不同

for循环各部分形成一个整体,
while和do…while的初始化语句与循环定义分离;
while、do…while的初始化语句、控制语句一般都会省略,而for循环一般不省略

(2)初始化语句的不同

定义位置不同;
作用于不同:
 for循环初始化语句仅限循环内使用
 while和do…while的初始化语句可以在循环外使用

(3)循环体执行次数的不同

for和while循环执行0-n次;
do…while执行1-n次,即至少执行一次;

(4)使用场景的不同

for和while可以互换,但while格式更简洁;
仅当循环体至少需要执行一次时使用do…while

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值