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