循环控制之while 和 do while循环

目录

while循环

while循环基本语法

while循环例题

do while循环

基本语法

do while循环例题

多重循环

多重循环例题

例题2打印空心金字塔


while循环

首先我们先看while循环的基本语法

while循环基本语法

while(循环条件){

        循环体;

        循环变量迭代;

}

注意:while循环也有四要素,只不过相比较与for循环位置不同

while循环的特点:先判断后执行

while循环和for循环一样,都是循环的执行操作,我们开看看,while循环的基本使用

代码演示:

while的死循环要搭配break去使用后面会讲到break 

package com.sequentialcontrol.while_;

/**
 * 演示while循环的基本使用
 */
public class while01 {
    public static void main(String[] args) {
        //演示while循环的基本使用
        int i = 1;
        while (i <= 100) {
            System.out.println(i);
            i++;
        }
        //该循环就是输出1-100之间的数字,执行流程是先判断i的值是否小于100,如果满足条件进入循环,不满足则不会进入循环,程序会继续往下执行
        
        //这就是一个死循环,会一直输出
        while (true){
            System.out.println("hello,word");
        }
    }
}

while循环例题

例题演示:

这是最简单的两个题目,后面会有难一点的题目

 第一题思路分析:

1.首先我们先输出1-100之间的方式,使用while循环的方式实现

2.题目要求我们输出1-100之间能被3整除的数,那么我们只需要在加一个if判断即可

第二题思路分析:

1.首先我们要输出40-200之间的数字,那么我们初始化i的时候就应该初始化为40

2.他要我们输出的是偶数,那么就用j去模2如果等于0说明该数字就是偶数,我们就输出,并且让j++

package com.sequentialcontrol.while_;

/**
 * 演示while循环的例题
 */
public class whileExercise {
    public static void main(String[] args) {
        //最基本的例题
        //打印1到100之间能被3整除的数
        int i = 1;
        while (i <= 100) {
            if (i % 3 == 0) {
                System.out.print(i + " ");
            }
            i++;
        }

        //打印40-200之间所有的偶数
        int j = 40;
        while (j <= 200) {
            if (j % 2 == 0) {
                System.out.print(j + " ");
            }
            j++;
        }

    }
}

do while循环

看看while循环的基本语法

基本语法

do{

        循环体;

        循环遍历迭代;

}while(循环条件);

注意事项:

1.do while 是关键字

2.do while 循环也有四要素,只不过位置不相同

3.do while 循环是先执行后判断,也就是说do while 循环一定会执行一次

4.while 循环和do while循环的区别

代码演示:

结论
.while 循环和do while循环的区别
do while 循环是先执行后判断,也就是说do while 循环一定会执行一次

首先我们先说两种循环的特点
while while循环的特点是先判断后执行
do while 特点是,先执行后判断

在案例中,充分的演示了while循环和do while 循环的区别和特点,在开发中,可以根据业务需求,灵活的选择

package com.sequentialcontrol.dowhile_;

/**
 * 演示 do while循环的基本操作
 */
public class doWhile01 {
    public static void main(String[] args) {
        //结论
        //.while 循环和do while循环的区别
        //do while 循环是先执行后判断,也就是说do while 循环一定会执行一次

        //首先我们先说两种循环的特点
        //while while循环的特点是先判断后执行
        //do while 特点是,先执行后判断,看演示

        //案例演示
        //定义一个布尔类型的变量
        boolean loop = false;
        //如果是while循环,会先判断循环条件。是否成立,loop的初始值就是false,因此不会输出hello,word 
        while (loop) {
            System.out.println("hello,word");
        }

        //演示do while
        //do while 循环的特点是,不管什么先执行后判断,因此该循环会输出一句hello,word 输出完之后,再去判断条件,发现不满足条件,就不会在进入循环了
        do {
            System.out.println("hello,word");
        } while (loop);


    }
}

do while循环例题

第一天思路分析:

.题目要求我们输出1-200之间的数,那么我们i的初始值就应该定义为1,循环的条件就应该是i<=200,然后,他要我们输出能被5整除,不能被3整除,只要增加一个if条件即可,只有满足这个条件,我们才去输出这个数

package com.sequentialcontrol.dowhile_;

public class doWhileExercise {
    public static void main(String[] args) {
        //统计1到200之间能被5整除不能被3整除的数
        int i = 1;
        do {
            if (i % 5 == 0 && i % 3 != 0) {
                System.out.println(i);
            }
            i++;
        } while (i <= 200);
    }
}

多重循环

多重循环顾名思义就是很多循环体嵌套在一起,一般不要超过3层的循环嵌套,

这就需要用到我们之前学习的for循环while循环和do while循环了

多重循环例题

思路分析

1.把统计每个班级总分的变量定义在外层循环的第一行,这样当第一次循环结束后,该变量又会被重新置成0,因此在第二次循环的时候,统计的就是第二个班级的总分,并且在每次统计完一个班级的总分的时候,输出每个班级的平均分,并且把该成绩,累加到在外定义的一个存放所有班级成绩总和的变量中

代码演示

package com.sequentialcontrol;

import java.util.Scanner;

/**
 * 演示多重循环例题
 */
public class MultipleLoopsExercise {
    public static void main(String[] args) {
        //1.统计三个班级成绩情况,每个班五个同学求各班级的
        //平均分和所有班级的平均分学生成绩从键盘输入
        //统计及格人数

        //思路分析
        //1.根据题目来看成绩需要我们从键盘输入,那么就是需要创建一个scanner对象用来输入成绩

        //创建一个scanner对象接受用户的输入
        Scanner scanner = new Scanner(System.in);

        double totalScore = 0;//该变量用用于存储所以班级的总成绩
        int count = 0;//统计几个的人数
        //因为是三个班级每个 班级五个学生,因此外层循环是3,内层循环是5
        for (int i = 1; i <= 3; i++) {
            double sum = 0;//该变量用于存储每个班级的总分
            for (int j = 1; j <= 5; j++) {
                System.out.println("第" + i + "个班第" + j + "个同学的成绩");
                double score = scanner.nextDouble();//接受输入的成绩
                if (score >= 60) {//如果输入的成绩,大于等于60说明成绩及格了,那么就count++统计几个的人数
                    count++;
                }
                //当内层循环结束后,sum存放就是第一个班级的总分,然后紧接着在退出到外层循环,输出每个班级的平均分,并把一个班级的总分累加到totalScore该变量是存放所有班级总分的。
                // 当一次循环结束后又重新把sum设置成了0,第二次的循环,统计的就是第二个班级学生的总分,这样当三层循环结束后,就完成了题目的要求
                sum += score;
            }
            System.out.println("第" + i + "个班级的平均分为" + sum / 5);//求每个班级的平均分
            totalScore += sum;//把每个班级的总分累加到,统计所有班级总分的变量中
        }
        System.out.println("所有班级的平均分为" + totalScore / 15);
        System.out.println("及格人数为" + count);
    }
}

例题2打印空心金字塔

思路分析

//1.我们先从最简单的开始,打印一个金字塔
//2.因为是打印空心金字塔,只需要在内存循环中,增加if条件判断即可 根据规律我们知道,只有每一行的第一列和最后一列都是*号,还有最后一行也都是*号,
//那么只需要增加if条件判断 判断只有第一列和最后一列和最后一行都是*号,其他都输出空格,这样即可完成效果
package com.sequentialcontrol.while_;

/**
 * 打印空心金字塔
 */
public class start {
    public static void main(String[] args) {
        //思路分析
        //1.我们先从最简单的开始,打印一个金字塔

        int n = 5;//定义金子塔的行数
        for (int i = 1; i <= n; i++) {
            for (int k = 0; k < n - i; k++) {
                System.out.print(" ");
            }
            for (int j = 1; j <= 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }

        //2.因为是打印空心金字塔,只需要在内存循环中,增加if条件判断即可 根据规律我们知道,只有每一行的第一列和最后一列都是*号,还有最后一行也都是*号,
        //那么只需要增加if条件判断 判断只有第一列和最后一列和最后一行都是*号,其他都输出空格,这样即可完成效果
        for (int i = 1; i <= n; i++) {
            for (int k = 0; k <= n - i; k++) {//该循环是用来输出,*号之前的空格的规律正好是行数n减去i
                System.out.print(" ");
            }
            for (int j = 1; j <= 2 * i - 1; j++) {//就是输出*号
                if (j == 1 || i == n || j == 2 * i - 1) {//根据条件
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值