循环
作用
在满足某个条件的前提下是操作语句反复执行
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);
执行流程
- 都是先判断在执行,执行次数为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只能作用于直属的循环层次
- 只要逻辑完整,嵌套层数无限制,但是通常不超过两层
//用*输出一个长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的区别
- 嵌套循环的执行流程