for循环
for循环语法格式
for (初始表达式; 条件表达式; 迭代表达式)
{
循环语句;
}
初始表达式是在for循环首次执行时要计算的表达式。通常,这里会为一个循环变量初始化一个值
条件表达式(循环条件)用于每次循环前的条件判断,只有在条件表达式值为true时,才入到循环语句执行。
迭代表达式则在循环语句执行完成后进行计算,一般来说使用一个递增或递减的计数器作为迭代表达式,改变循环变量的值
`package com.hpe.jave;
public class Demo01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* for循环为我们专门提供了三个位置来放三个表达式
* 1.初始化语句
* 2.条件表达式
* 3.累加器
*
* for(①初始化语句;②条件表达式;④累加器){
* ③循环体;
*
* }
*/
//抄课文
for(int i=1;i<=10;i++){
System.out.println("抄课文");
}
}
}`
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
在这里插入图片描述
for循环执行过程
for语句执行时,首先执行初始表达式(只是第一次执行),然后判断条件表达式的值,如为true则转向2,如为false则转向4。
执行循环语句;循环语句执行完成,转向3
计算迭代表达式,计算完,转向1。
结束for循环。
`package com.hpe.jave;
public class Demo02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// *****
// *****
// *****
// *****
// *****
//这个循环控制的是图形的高度
for(int i=0;i<5;i++){
//System.out.println("*****");//768
//内层循环的是图形的宽度
for(int j=0;j<5;j++){
System.out.print("*");
}
System.out.println();
}
}
}`
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
在这里插入图片描述
`package com.hpe.jave;
public class Demo021 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 外 内 规律
// ***** 1 i=0 5 5-i
// **** 2 i=1 4
// *** 3 i=2 3
// ** 4 i=3 2
// * 5 i=4 1
for(int i=0;i<5;i++){
for(int j=0;j<5-i;j++){
System.out.print("*");
}
System.out.println();
}
}
}`
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
在这里插入图片描述
for循环的优点
在一个地方包括循环的全部规则,不是把几个语句放在代码的不同地方。使代码更易于阅读。适用于循环的开始和结束已知,循环次数固定的场合。
while循环多适用于循环次数不确定,仅需知道循环终止条件的场合
在这里插入图片描述
死循环
不会停止的循环。
实现方式如下:
在这里插入图片描述
例题:某次程序大赛,3个班级各4名学员参赛,计算每个班参赛学员的平均分
`package com.hpe.jave;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 某次程序大赛,3个班级各4名学员参赛,计算每个班参赛学员的平均分
Scanner sc =new Scanner(System.in);
int sum=0;//总分
int avg=0;//平均分
//外层控制班级,
for(int i=0;i<3;i++){
System.out.printf("请输入第%s个班级学生的信息",(i+1));
System.out.println();
sum=0;
//内层循环控制每个学员的分数
for (int j=0;j<4;j++){
System.out.printf("请输入第%s个学生的成绩",(j+1));
int score= sc.nextInt();
sum+=score;
}
//计算每个班级的平均分
avg=sum/4;
System.out.println("班级平均分"+avg);
}
}
}`
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
在这里插入图片描述
小结:
while()加循环条件,一但条件不满足就不执行语句。先判断后执行。适用于循环次数不确定,仅需知道循环终止条件的场合
do-while(),判断条件满足则执行语句,条件不满足时退出循环,但是do-while()是先执行后判断,所以至少要做一次循环
for(定义循环初始条件;循环退出条件;参数自加)。适用于循环的开始和结束已知,循环次数固定的场合
特殊流程控制语句
break 语句
break语句用于终止某个语句块的执行,最多使用的是跳出当前的整个循环
{ ……
break;
……
}
continue 语句
continue语句立即终止当前循环,继续执行下一次循环
continue语句用在for循环中也是终止当前循环,继续执行下一次循环
continue语句用法举例
打印1-100不能被3整除的数
For循环嵌套continue位置
注意
break只能用于switch语句和循环语句中。
continue 只能用于循环语句中。
在同一代码块中,break和continue之后不能有其他的语句,因为程序永远不会执行到break和continue之后的语句。
`package com.hpe.jave;
public class Demo04 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* 1.while常用在循环次数不确定的情况下
* 2.for用在次数固定的情况下
* 3.for循环初始化变量定义在小括号里面,只能在循环内部用
* 4.while初始化变量定义在循环外面,在循环外部也可以用
*/
for(int i=0;i<10;i++){
if(i==4){
break;
//break:一旦执行,终止循环
}
System.out.println(i);
}
for(int i=0;i<10;i++){
if(i==4){
continue;
//continue:跳过当次循环,继续执行下一次循环
}
System.out.println(i);
}
int i=0;
while(i<10){
if(i==4){
continue;
}
System.out.println(i);
i++;
}
}
}`
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41