java基础之循环的使用

发布时间:2024年01月10日

循环

作用

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

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米,问多少步可以走完
?
 ? ? ? 

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

while与for

?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);
执行流程
  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. 嵌套循环的执行流程

文章来源:https://blog.csdn.net/zhzjn/article/details/135509297
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。