在满足某个条件的前提下使操作语句反复执行
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);
定义在方法内部的变量
作用范围:从定义行开始,到直属代码块{}结束
命名冲突:同一作用范围内局部变量之间不可重名
使当前循环停止,跳出当前所有循环
//让张三跑100圈,跑至第50圈时,停止跑圈 ? ? ?
?for (int i = 1; i <= 100; i++) {
? ? ? ? ? ?//判断是否跑至第50圈
? ? ? ? ? ?if (i == 50) {
? ? ? ? ? ? ? ?break;//跳出循环
? ? ? ? ? }
? ? ? ? ? ?System.out.println("张三正在跑第"+i+"圈");
? ? ? }
使本次循环停止直接开始下一次,跳过本次循环
//让张三跑100圈,逢10跳过一圈
?for (int i = 1; i <= 100; i++) {
? ? ? ? ? ?//判断是否逢10
? ? ? ? ? ?if (i % 10 == 0) {
? ? ? ? ? ? ? ?continue;//跳过本次
? ? ? ? ? }
? ? ? ? ? ?System.out.println("张三正在跑第"+i+"圈");
? ? ? }
break是跳出所有循环,continue是跳出本次循环
break可以作用于switch分支,continue无法作用于分支
while(布尔表达式){//循环条件 ? ?//操作语句 }
//有一段路总长88米,小明一步0.8米,问多少步可以走完 ? ? ? ?
判断循环条件–>为true–>执行操作语句–>判断循环条件–>直到为false—>循环结束
?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);
执行流程
都是先判断再执行,执行次数为0-n次
for循环适用于循环次数或范围确定的场景
while循环适用于循环次数或返回不确定的场景
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(布尔表达式);//循环条件
先执行,再判断.执行次数为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);
一个循环结构中包含另一个循环结构
执行流程: 外层循环执行一次,内层循环执行一遍
图形输出: 外层循环表示行,内层循环表示列
break和continue只能作用于直属的循环层次
只要逻辑完整,嵌套层数无限制,但是通常不超过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();
? ? ? }
局部变量的特点
break和continue的区别
for和while的关系
while和do-while的区别
嵌套循环的执行流程