作用
在满足某个条件的前提下使操作语句反复执行
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);
局部变量
概念
定义在方法内部的变量
使用
- 作用范围:从定义行开始,到直属代码块{}结束
- 命名冲突:同一作用范围内局部变量之间不可重名
流程控制
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+"圈");
}
区别
- break是跳出所有循环,continue是跳出本次循环
- 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
-
都是先判断再执行,执行次数为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循环
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的区别
- 嵌套循环的执行流程