12.0/循环语句(for循环[常用必备],while循环,do....while,死循环)

目录

12.1 for循环

12.2 while循环——格式和流程

12.3 do-while循环——格式和流程

12.4 死循环


在业务中,需要使用到《循环》

什么是循环呢,

循环结构作用:

可以控制一段代码,然后重复执行的代码。

java中的基本循环有:

while循环 do…while循环 for循环

12.1 for循环

虽然所有循环结构都可以用

while或者do…while表示,但Java提供了另一种语句-for循环,使一些循环结构变得更加简单。

一.重点掌握并理解for循环的执行流程

for循环语句是

支持迭代的一种通用结构,是最有效,最灵活的循环结构。

for循环执行的次数是

在执行前就确定的。

二. 语法格式如下:

for循环格式:

for (初始化语句; 循环条件; 迭代语句) {  

     循环体语句(重复执行的代码);

} ​

初始化语句:一般是定义一个变量,并给初始值

循环条件:一般是一个关系表达式,结果必须是true或者false

迭代语句:用于对条件进行控制,一般是自增或者自减

循环语句体:需要重复执行的代码

三.上实操,看案例,简单明了

比如:我们想要在控制台打印输出3个HelloWorld

//需求:打印3行Hello World
for(int i = 0; i < 3; i++) {
    System.out.println("Hello World");
}

如下图所示,是按照下面的① ② ③ ④, ② ③ ④... 的顺序来执行的;

当②条件为true时,再依次执行③④代码,然后回到②继续判断

当②条件为false时,就结束循环

先执行①②③, 再执行④②③ 在执行④②③ ... 直到步骤②不满足条件时。

具体执行的每一步可以看下面的图解


代码show

例子:

public class ForDemo01 {
    public static void main(String[] args) {
        int a = 1;//初始化条件
        while (a <= 100) {//条件判断
            System.out.println(a);//循环体
            a += 2;//迭代
        }
        System.out.println("while循环结束!");

        //初始化;条件判断;迭代
        for (int i = 1; i <= 100; i++) {
            System.out.println(i);
        }
        System.out.println("for循环结束!");

        /**
         * 关于for循环,有如下几点说明:
         * 最先执行初始化步骤。
         *          可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句
         * 然后,检测布尔表达式的值。
         *          如果为true,循环体被执行。
         *          如果为false,循环终止,开始执行循环体后面的语句
         * 执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)
         * 再次检查布尔表达式的值。循环执行上面的过程
         */
        //死循环
        for (; ; ) {

        }

    }

}
例1:

//1.定义一个变量用于求和
int sum1 = 0;
//2.定义一个循环产生1-100之间的奇数
for (int i = 1; i < 100; i+=2) {
    // i = 1 3 5 7 ...
//3.让需要求和的数据和sum1累加,
    sum1 += i;
}
System.out.println("1-100之间的奇数和:" +  sum1);

代码的执行流程分析

初始化sum1=0;

当i=1时:sum1+=1; sum1=1;
当i=3时:sum1+=3; sum1=4;
当i=5时:sum1+=5; sum1=9;
...
当i=99时:sum1+=99; sum1=2500

求奇数和的思路(只是求和的数据变成了奇数,思路和前面没有变化)
    1)首先需要定义一个求和变量,这里命名为sum2
    2)再遍历得到所有需要求和的数据(1~100之间的所有整数)
    3)在求和之前先对数据判断,如果是奇数,才和sum1累加;否则什么也不干
    结果:所有数据累加完之后最终sum1就是所有数据的和

//1)首先需要定义一个求和变量,这里命名为sum2
int sum2 = 0; 
//2)再遍历得到所有需要求和的数据(1~100之间的所有整数)
for (int i = 1; i <= 100; i++) {
    //i = 1 2 3 4 5 6 ... 99 100
    //3)在求和之前先对数据判断,如果是奇数,才和sum1累加;否则什么也不干
    if(i % 2 == 1){
        // i = 1 3 5 7 9 ... 99
        sum2 += i;
    }
}
System.out.println("1-100之间的奇数和:" + sum2)



偶数和:

   int sum = 0;
        for (int i = 2; i <= 100; i += 2) {
            sum += i;
        }
        System.out.println("1~100之间偶数的和为:" + sum);
    }
}


public class ForDemo02 {
    public static void main(String[] args) {
        //练习1:计算0到100之间的奇数和偶数的和
        int oddSum = 0;
        int evenSum = 0;
        for (int i = 0; i <= 100; i++) {
            if (i % 2 != 0) {//奇数
                oddSum += i;//oddSum = oddSum + i;
            } else {//偶数
                evenSum += i;
            }
        }
        System.out.println("奇数的和:" + oddSum);
        System.out.println("偶数的和:" + evenSum);
    }
}

注意: 掌握使用for循环批量产生数据。
for (int i = 1; i <= 100; i++) {
    System.out.println(i);
}

求和的思路分析:
    1)首先需要定义一个求和变量,一般命名为sum
    2)再遍历得到所有需要求和的数据(1~100之间的所有整数)
    3)让需要求和的数据和sum累加,
    结果:所有数据累加完之后最终sum就是所有数据的和

需求:求1~100中所有整数的和
int sum = 0;
//定义一个循环,先产生1-100,这100个数
for (int i = 1; i <= 100; i++) {
    //每产生一个数据,就把这个数和sum累加
    sum += i; //sum = sum  + i;
}
System.out.println("1-100的数据和:" +  sum);

上面代码的执行过程:

i=1时:sum=0+1; sum=1;
i=2时:sum=1+2; sum=3;
i=3时:sum=3+3; sum=6;
i=4时:sum=6+4; sum=10;
...
i=100时: sum+=99; sum=5050

上面是1~100;

这是1~50的求和案例

public class Test11 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i=1;i<=50;i++){
            sum+=i;
        }
        System.out.println("1~50的和为:"+sum);

    }
}
例3:

public class ForDemo03 {
    public static void main(String[] args) {
        //练习2:用while或者for循环输出1-1000之间能被5整除的数,并且每行输出3个
        for (int i = 0; i <= 1000; i++) {
            if (i % 5 == 0) {
                System.out.print(i + "\t");
            }
            if (i % (5 * 3) == 0) {//每行
                System.out.println();
                //System.out.println("\n");
            }
        }
        //println 输出完会换行
        //print 输出完不会换行

    }
}

小提示:idea快速写出for循环

如果循环100次,可以输如100.for,idea就有提示

四.for循环应用场景

具体在哪些实际场景下使用呢?

其实只要是重复做的事情,都可以用循环语句来做

比如:在京东的网页上展示100台手机信息,我们只需要把展示数据的代码写一份,重复执行就可以了。

再比如:再我们教学管理系统中,有很多员工需要展示在页面上,我们没必要每一个员工都写一份展示数据代码,只需要写一份重复执行就可以了。

重点掌握for循环的执行流程。
在以后,我们还会经常用到for循环,用多了,你就会越来越熟悉了。
 
假如有校长找人做教学管理系统或购物招人,恭喜你有这一技之长,发财啦!

12.2 while循环——格式和流程

一.格式:

二.上实操,看案例,简单明了

例1:

需求:打印5行Hello World
int i = 0;
while (i < 5) {
    // i = 0 1 2 3 4
    System.out.println("Hello World");
    i++;
}

代码的执行流程如下图所示:按照① ②③④ ②③④ ... 的流程执行

如果②步骤为true,才循环执行③④步骤

如果②步骤为false,则循环结束

例2:

经典题目水仙花数
(从0至999之间各个位数的立方和等于本身的数等于水仙花数)
代码:

#include <stdio.h>
int main (void)
{
    int i=0;     //定义初始值数
    int a,b,c;     //定义个位数百位数
    while( i<=999)  //条件
    {
        //开始拆解个位、十位、百位;
        a = i/100;   //百位
        b = i/10%10; //十位
        c = i%10;    //个位
        if (a*a*a+b*b*b+c*c*c == i)  //if语句判断条件
        {
            printf("水仙花:%d\n",i); //为真输出语句块
        }
        i++;   //再计算i,后面返回while
    }
    return 0;
}

//public class Test13 {
//    public static void main(String[] args) {
//        int a=10;
//        while (a>=1){
//            System.out.println(a);
//            a--;
//        }
//
//    }
//}

如果条件一直是ture的话,则不会停止,所以通常会吧条件给限定一下。

例如:输出1-10

那就是循环十次,每次输出上一个数字+1

//public class Test13 {
//    public static void main(String[] args) {
//        int a=1;
//        while (a<=10){
//            System.out.println(a);
//            a++;
//        }
//
//    }
//}

老铁,没毛病。

例3:

世界最高山峰珠穆朗玛峰高度是:8848.86米=8848860毫米,假如我有一张足够大的它的厚度是0.1毫米。请问:该纸张折叠多少次,可以折成珠穆朗玛峰的高度?

分析:首先由于不知道折叠多少次,我们可以选择用while循环
    1)纸张的初始化厚度为0.1毫米,珠峰的高度为8848860毫米
        double peakHeight = 8848860;
        double paperThickness = 0.1;
    2)每次折叠纸张的厚度为原来的两倍,这是需要循环执行的
        while(纸张厚度<8848860){
            纸张厚度*=2;
        }
    3)需要求折叠的次数,可以用一个变量来记录折叠的次数
        int 次数 = 0;
        while(纸张厚度<8848860){
            纸张厚度*=2;
            次数++; //每次折叠次数累加
        }
    结果:等循环结束之后,打印记录次数的值,就是折叠多少次了。

按照上面分析的思路把代码写出来

// 1、定义变量记住珠穆朗玛峰的高度和纸张的高度。
double peakHeight = 8848860;
double paperThickness = 0.1;

// 3、定义一个变量count用于记住纸张折叠了多少次
int count = 0;

// 2、定义while循环控制纸张开始折叠
while (paperThickness < peakHeight) {
    // 把纸张进行折叠,把纸张的厚度变成原来的2倍。
    paperThickness = paperThickness * 2;
    count++;
}
System.out.println("需要折叠多少次:" + count);
System.out.println("最终纸张的厚度是:" + paperThickness);
例4:

public static void main(String[] args) {

int i = 0;

while (true){

System.out.println(i++);

}

}

三.for、while 的区别与选择

while循环和for循环的执行流程是一样的

  • 从功能来说:能够用for循环做的,都能用while循环做。

  • 使用规范上来说:知道循环几次,建议使用for;不知道循环几次建议使用while

  • while循环语句在最前面检测循环条件

    所以循环体中的代码可能一次都不执行

    这种方法其实不经常用到,经常用到的是for循环

12.3 do-while循环——格式和流程

一.

while循环特点:先判断,再执行

do…while 循环,它也有特点:先执行,再判断

二.

do…while 循环的格式:

如下图所示:do-while循环的执行流程,是按照① ②③④ ②③④... 的顺序执行的。

我们会发现,do-while循环的特点是先执行,再判断的。即使条件不成立,也会先执行一次。

三.上实操,看案例,简单明了

public class Test14 {
        public static void main(String[] args) {
            int a=1;
            do{
                System.out.println(a);
               a++;
            }while (a<=10);

        }

//        public static void main(String[] args) {
//            int a=10;
//            do{
//                System.out.println(a);
//                a--;
//            }while (a>=1);
//
//
//
//        }

}

四.

三种循环的区别

1. for循环 和 while循环(先判断后执行); 
   do...while (先执行后判断)
   
2.for循环和while循环的执行流程是一模一样的,
    功能上无区别,for能做的while也能做,反之亦然。
    如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。
    
3 for循环中控制循环的变量只在循环中使用
  while循环中,控制循环的变量在循环后还可以继续使用

12.4 死循环

一、概述
死循环就是指的是永不会结束的循环,也即是循环的判断条件永远为true。

二、分类
for(😉);{}

while(true){}

三、实例例1:

for:

    public static void main(String[] args) {
        for(;;){
            System.out.println("EuropeanSheik");
        }
    }


 

while:

    public static void main(String[] args) {
        while(true){
            System.out.println("EuropeanSheik");
        }
    }
do.while:

    public static void main(String[] args) {
        do {
            System.out.println("EuropeanSheik");
        }
        while(true);
    }
例2:

//for死循环
for ( ; ; ){
    System.out.println("Hello World1");
}

//while死循环
while (true) {
    System.out.println("Hello World2");
}

//do-while死循环
do {
    System.out.println("Hello World3");
}while (true);

死循环有什么应用场景呢?

最典型的是可以用死循环来做服务器程序,

比如百度的服务器程序就是一直在执行的,你随时都可以通过浏览器去访问百度。如果哪一天百度的服务器停止了运行,有就意味着所有的人都永不为百度提供的服务了。

对于这样的应用我们目前了解一下就可以了。对于目前来说我们只要知道代码格式该怎么写,能达到什么效果就行。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光明是人的信仰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值