循环及各种循环语句、精细讲解

作用

在满足某个条件的前提下使操作语句反复执行

for循环

for(循环初始值;循环条件;迭代语句){
    //操作语句
}
//需求:让张三绕着操场跑5圈
        /*
        i=圈数
        初始值:从1开始
        循环条件: 小于等于5圈继续执行
        迭代语句:圈数每次+1
        * */
        for (int i = 1; i <= 5; i++) {
            //System.out.println("张三正在跑第i圈"); 错误
            System.out.println("张三正在跑第"+i+"圈");
        }

执行流程

初始值–>判断循环条件–>为true–>执行操作语句–>执行迭代–>判断循环条件–>直到为false–>循环结束

只有当循环结束之后程序才会继续向下执行

死循环: 循环永远满足循环条件,程序无法继续向下

//计算1-100的和
        //1+2+3+4+5+6+7+8+9...+100
        //累加器,用来接收结果
        int sum=0;
        for (int i = 1; i <= 100; i++) {
            //将i的值加给累加器
            sum+=i;//0+1+2+3+..100
        }
        System.out.println(sum);
 //计算1-100之间偶数的和  2+4+6+8+10+12..+100
        int sum=0;//累加器
        /*for (int i = 1; i <= 100; i++) {
            if (i%2==0) {//判断i是否为偶数
                sum += i;
            }
        }*/
        for (int i = 2; i <= 100; i += 2) {
            sum+=i;
        }
        System.out.println(sum);

局部变量

概念

定义在方法内部的变量

使用

  1. 作用范围:从定义行开始,到直属代码块{}结束
  2. 命名冲突:同一作用范围内局部变量之间不可重名

流程控制

break

使当前循环停止,跳出当前所有循环

 //让张三跑100圈,跑至第50圈时,停止跑圈
        for (int i = 1; i <= 100; i++) {
            //判断是否跑至第50圈
            if (i == 50) {
                break;//跳出循环
            }
            System.out.println("张三正在跑第"+i+"圈");
        }

continue

使本次循环停止直接开始下一次,跳过本次循环

//让张三跑100圈,逢10跳过一圈
        for (int i = 1; i <= 100; i++) {
            //判断是否逢10
            if (i % 10 == 0) {
                continue;//跳过本次
            }
            System.out.println("张三正在跑第"+i+"圈");
        }

区别

  1. break是跳出所有循环,continue是跳出本次循环
  2. break可以作用于switch分支,continue无法作用于分支

while循环

while(布尔表达式){//循环条件
    //操作语句
}
//有一段路总长88米,小明一步0.8米,问多少步可以走完

        double sum=0.0;//米数
        int num=0;//累加器,表示步数
        /*while(sum<88){//循环条件:米数<88
            //步数+1
            num++;
            //米数+0.8
            sum+=0.8;
        }*/
        while(true){//死循环,假定一直走
            //步数+1
            num++;
            //米数+0.8
            sum+=0.8;
            //判断是否走到终点
            if (sum >= 88) {
                break;//停止循环
            }
        }
        System.out.println("步数:"+num);

执行流程

判断循环条件–>为true–>执行操作语句–>判断循环条件–>直到为false—>循环结束

while与for

  1. 都是先判断再执行,执行次数为0-n次

  2. for循环适用于循环次数或范围确定的场景

  3. while循环适用于循环次数或返回不确定的场景

  4. while和for之间的操作可以互等

    for(;;){
        
    }
    相当于
        while(true){
            
        }
    
//while-计算1-100的和
       /* int i=1;//初始值
        int sum=0;//累加器
        while(i<=100){//循环条件
            sum+=i;
            //迭代语句
            i++;
        }

        System.out.println(sum);*/

        //for-有一段路总长88米,小明一步0.8米,问多少步可以走完
        double sum=0.0;//米数
        int num=0;//累加器,表示步数
        for(;;){//while(true)
            //步数+1
            num++;
            //米数+0.8
            sum+=0.8;
            //判断是否走到终点
            if (sum >= 88) {
                break;//停止循环
            }
        }
        System.out.println(num);

do-while循环

do{
    //操作语句
}while(布尔表达式);//循环条件

执行特点

先执行,再判断.执行次数为1-n次

执行流程

执行操作语句–>判断循环条件–>为true–>执行操作语句–>判断循环条件–>直到为false–>循环结束

//让张三跑圈,跑完一圈对其打分,分数>=80停止跑圈,否则继续跑圈
        Scanner sc = new Scanner(System.in);
        int score=0;
        do{
            System.out.println("张三正在跑圈...");
            System.out.println("跑圈结束,请打分:");
            //接收分数
            score = sc.nextInt();
        }while (score<80);

嵌套循环

一个循环结构中包含另一个循环结构

使用

  1. 执行流程: 外层循环执行一次,内层循环执行一遍

  2. 图形输出: 外层循环表示行,内层循环表示列

  3. break和continue只能作用于直属的循环层次

  4. 只要逻辑完整,嵌套层数无限制,但是通常不超过2层 (效率过慢)

//用*输出一个长10宽3的长方形
        /*
        **********
        **********
        **********
        */

        for (int i = 1; i <= 3; i++) {//行
            for (int j = 1; j <= 10; j++) {//列
                System.out.print("*");
            }
            //输出完一行换行
            System.out.println();

        }
/*
        *       1-1
        **      2-2
        ***     3-3
        ****
        *****
        * */
        for (int i = 1; i <= 5; i++) {//行
            for (int j = 1; j <= i; j++) {//列
                System.out.print("*");
            }
            System.out.println();
        }
/*
        *           i=1-1j
        ***         2-3
        *****       3-5
        *******     4-7
        *********   5-9 j=i*2-1
        */
        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= i * 2 - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }

今日掌握

  1. 局部变量的特点
  2. break和continue的区别
  3. for和while的关系
  4. while和do-while的区别
  5. 嵌套循环的执行流程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值