03.循环结构

1.循环:重复性做某件事。作用:减化代码,提高复用性

2.循环结构的组成部分

2.1:初始化语句:要作循环前的准备语句。
2.2:循环条件(判断语句):循环要执行时满足条件。
2.3:条件叠加(控制语句):改变循环的条件
2.4:循环体:循环要做的事

3.for循环:解决先判断后执行,循环次数固定的重复性操作问题

3.1:语法:for(初始化语句1;循环条件2;条件叠加3){
循环体;
}

for循环.png

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(循环条件){
循环体;
叠加条件;

while循环.png

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(循环条件);

do-while循环.png

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();
  }
}

你可能感兴趣的:(03.循环结构)