1.循环:重复性做某件事。作用:减化代码,提高复用性
2.循环结构的组成部分
2.1:初始化语句:要作循环前的准备语句。
2.2:循环条件(判断语句):循环要执行时满足条件。
2.3:条件叠加(控制语句):改变循环的条件
2.4:循环体:循环要做的事
3.for循环:解决先判断后执行,循环次数固定的重复性操作问题
3.1:语法:for(初始化语句1;循环条件2;条件叠加3){
循环体;
}
3.2:执行流程:先执行初始化语句1,再判断循环条件2,如果循环条件2为false,就跳出for循环结构,执行之后语句;如果循环条件2为true,就执行循环体,再执行条件叠加3,重复蓝色字体部分。
3.3:结构特点:
3.3.1:for循环结构的初始化语句1有且仅执行一次;循环条件2可以执行一次到多次;条件叠加3和循环全可以执行0次到多次。
3.3.2:for循环结构中小括号中两个分号一定不能省略。
3.3.3:for循环结构初始化语句1不能直接省略,如果要省略可以将初始化语句1写在for循环结构前面;循环条件2直接可以省略,省略后就变成死循环;条件叠加3直接省略,就变成死循环,如果想省略条件叠加3又不会变成死循环;for循环结构三个条件可以同时省略,只是死循环。
3.3.4:for循环结构的初始化语句1和条件叠加3可以由一到多个式子组成,式子之间用逗号分隔。eg:for(int i=1;i<=100;i++){ System.out.println("第"+i+"次good good study,day day up"); }
4.while循环:解决先判断后执行,循环次数不固定
4.1:语法:
初始化语句;
while(循环条件){
循环体;
叠加条件;
}4.2:执行流程:先执行初始化语句,再判断循环条件,如果循环条件为false,跳出while循 环,执行之后的语句;如果循环条件为true,就执行循环体和叠加条件,然 后再重复蓝色字体部分。
4.3:结构特点:while循环结构中,初始化语句有且仅执行一次,循环条件可以执行1次到多 次,循环体和叠加条件可以执行0次到多次。eg:public static void main(String[] args){ //初始化语句 int saveMoney=0;//存款 int save=3000;//每个月要存的钱数 int month=0; while(saveMoney<=10000000){ //循环体 saveMoney=saveMoney+save; //叠加条件 month++; save=save+1000; } System.out.println(month+"个月后成为千万富翁,共用"+(month/12)+"年"); }
5.do-while循环:解决先无条件执行一次循环体,再判断再执行的重复性问题
5.1:语法:
初始化语句;
do{
循环体;
叠加条件;
}while(循环条件);5.2:执行流程:先执行初始化语句,然后执行循环体和叠加条件,再执行循环条件,如果循环 条件为false,就跳出循环结构,执行之后的语句;如果循环条件为true,就执行 循环体和叠加条件,再重复蓝色字体部分。
5.3:结构特点:do-while循环结构初始化语句有且仅执行一次,循环体和叠加条件至少执行一 次,循环条件至少执行一次。eg:public static void main(String[] args){ //获得具有从键盘上接收数据的能力 Scanner input=new Scanner(System.in); //初始化语句 String result=""; do{ //循环体 System.out.println("编码考试"); //循环叠加 System.out.println("考试是否合格?(y/n)"); //从键盘上接收数据并存在变量中 result=input.next(); }while(!result.equals("y")); }
6.for VS while VS do-while
6.1:能用for循环解决的问题都可以用while循环解决;能用while循环解决的问题都可以用for 循环解决。一般解决先判断后执行,循环次数固定的重复性问题,首选for循环。
一般解决先判断后执行,循环次数不固定的重复性问题,首选while循环。
6.2:能用for循环或者while循环解决的问题,不一定能用do-while循环解决。
能用do-while循环解决的问题,都可以用for循环或者while循环解决。
6.3:只要是有重复性的操作,就要用循环结构;只要是先执行后判断的重复性问题就用do- while循环结构,先判断后执行,循环次数固定的重复性问题,首选for循环,先判断 后执行,循环次数不固定的重复性问题,首选while循环
7.嵌套循环结构:在一个循环结构的大括号中完整的包含了另一个循环结构
7.1:循环结构的嵌套可以是多层,嵌套要正确。一般情况常用两层嵌套的循环结构。
7.2:在嵌套循环结构中,外层循环结构循环一次,内层循环结构要循环完。(内层循环其实是 外层循环的循环体中一部分)eg:public static void main(String[] args){ //获得具有从键盘上接收数据的能力 Scanner input=new Scanner(System.in); //接收三个班 for(int j=1;j<=3;j++){ System.out.println("请输入第"+j+"班的成绩"); //从键盘上接收一个班四名学员的成绩 for(int i=1;i<=4;i++){ System.out.println("请输入第"+i+"名学员的成绩"); double score=input.nextDouble(); } } }
8.break:跳出结构。只能用于switch结构和循环结构中
9.1:break的作用:用在switch结构中,跳出switch结构。
用在循环结构中,跳出当前循环结构。eg:public static void main(String[] args){ //获得从键盘上接收数据的能力 Scanner input=new Scanner(System.in); for(int j=1;j<=3;j++){ System.out.println("请输入第"+j+"班的成绩:"); for(int i=1;i<=4;i++){ System.out.println("请输入第"+i+"名学员的成绩:"); double score=input.nextDouble(); //判断成绩是否符合要求,不符合要求停止当前班级的录入, //接着录入下一个班 if(score>100||score<0){ break;//跳出内层循环结构 } } System.out.println(); } }
9.2:break作标记的用法:跳出作标记的指定结构
语法:标记名 要跳出的结构;
break 标记名;eg:public static void main(String[] args){ //获得从键盘上接收数据的能力 Scanner input=new Scanner(System.in); a:for(int j=1;j<=3;j++){ System.out.println("请输入第"+j+"班的成绩:"); for(int i=1;i<=4;i++){ System.out.println("请输入第"+i+"名学员的成绩:"); double score=input.nextDouble(); //判断成绩是否符合要求,如果不符合要求就终止录入 if(score<0||score>100){ break a;//跳出标记指定的外层循环结构 } } System.out.println(); } }
9.continue:只能用在循环结构中。结束当次循环,进入下一次循环
eg:public static void main(String[] args){ //获得从键盘上接收数据的能力 Scanner input=new Scanner(System.in); for(int i=1;i<=4;i++){ System.out.println("请输入第"+i+"名学员的成绩:"); double score=input.nextDouble(); //第一种:用continue实现 if(score>100||score<0){ continue;//结束当次循环,进入下一次循环 } System.out.println("成绩录入成功"); /*第二种:用if结构实现 if(score<=100&&score>=0){ System.out.println("成绩录入成功"); }*/ } }
10.return:可以在方法的任何地方用。作用:结束当前方法;线束当前的方法的同时返回一个结果
注意:return关键字后面不能直接写代码,是永远无法执行的代码会报错。
eg:public static void main(String[] args){ //获得从键盘上接收数据的能力 Scanner input=new Scanner(System.in); for(int j=1;j<=3;j++){ System.out.println("请输入第"+j+"班的成绩:"); for(int i=1;i<=4;i++){ System.out.println("请输入第"+i+"名学员的成绩:"); double score=input.nextDouble(); //判断成绩是否符合要求,如果不符合要求就终止录入 if(score<0||score>100){ return;//结束main方法 } } System.out.println(); } }