• 程序控制流---循环结构(while循环 do-while循环 for循环)


    控制流有两种结构:    条件结构      循环结构

          条件结构三种:基本条件结构,多重条件结构,switch条件结构

          循环结构三种:while循环    do-while循环    for循环

    while循环:先判断条件,再执行循环操作,通常在未知循环次数时使用(只知道满足什么条件时停止,不清楚要循环多少次)

    do-while循环:先执行、再判断循环条件,对其结果判断是否继续进行循环( 相当于while(true)结合break使用 )

    for循环:本质是对while的简化,在已知情况下(循环次数)使用

      for(变量初始化;循环条件;变量更新){ ...... }(已知循环多少次,当循环次数到了,就停止循环)

    continue:跳过一次循环

    break:跳出单层循环

    while循环:(使用while前,必须要声明变量,并对其初始化,如果在条件中声明,则每次都会重新生成,变量不会发生改变,循环不会停止;条件中的变量必须要进行更新到不满足条件才能使循环结束)

    while(条件){
        //重复执行的代码
    }

    例子:生成1-100内偶数的和(思路:1%2==0;2%2==0;......100%2==0)

    计算数值从1开始,每次递增1,重复执行的是偶数判断

    //此方法每一个数都要判断,性能不好
    int i=1;
    int sum=0;
    while(i<=100){
      if(i%2==0){
        sum+=i;
      }
      i++;
    }
    sout(sum);
    //此方法按照偶数的规律,直接得到偶数以及偶数和的值
    int j=2;
    int sum=0;
    while(j<=100){
      sum+=j;
      j+=2;
    }
    sout(sum);

    例子:录入10个人的年龄,分别计算老年(60以上)、中年(20-59)、幼年(1-19)分别多少人?

    Scanner sc=new Scanner(System.in);
    //分别用于记录三个年龄段的人数和
    int oldCount=0;
    int middleCount=0;
    int youngCount=0;
    int i=1;
    while(i<=10){
      sout(“请输入第”+i+“个人的年龄:”);
      int age=sc.nextInt();
      if(age>=60){
        oldCount++;
      }
      else if(age>=20){
        middleCount++;
      }
      else{
        youngCount++;
      }
      i++;
    }
    sout(“老年人共有:”+oldCount+“,中年人有:”+middleCount+“,幼年有:”+youngCount)

    例子:操场800米一圈,要跑4300米,需要跑几圈,不满一圈算一圈

    //跑的距离
    int len=0;
    //跑的圈数
    int count=0;
    //不能等于4300,不然正好到了4300米时还是会进入循环
    while(len<4300){
      count++;
      len+=800;
    }
    sout("共跑了"+count+"圈");

    例子:产生四位验证码

    Random ran=new Random();
    String code="";
    int i=1;
    while(i<=4){
    //生成0-9的数字
      int n=ran.nextInt(10);
      code+=n;
      i++;
    }
    sout("生成的验证码是:"+code);

    do-while循环(先执行再循环,循环至至少会执行一次(先做,对其结果进行判断,是否继续进行))

    do{

      //循环执行条件

    }while(条件);

    例子:参加考试,判断是否要进行补考(考过了一次根据成绩判断是否进行补考)

    Random ran=new Random();
    int score;
    do{
      score=ran.nextInt();
      sout("考试分数是:"+score);
    }while(score<60);
    sout("通过了考试!");

    例子:登录失败后重新输入的操作

    Scanner sc=new Scanner(System.in);
    //创建变量
    String name;
    String pwd;
    //创建记录用户名和密码是否正确的变量
    boolean nameFlag;
    boolean pwdFlag;
    do{
        //每次进入循环都要充值一下记录的数据,不然上次循环变更的flag还会保存
      nameFlag=true;
      pwdFlag=true;
      sout("请输入用户名");
      String name=sc.next();
      sout("请输入密码");
      String pwd=sc.next();
      //判断用户名是否一致
      if(!name.equals("admin")){
        sout("用户名输入错误,请重新输入");
      //更改nameFlag
        nameFlag=false;
      }
      //判断密码是否正确
      else if(!pwd.equals("000")){
        sout("密码输入错误,请重新输入");
      //更改pwdFlag
        pwdFlag=false;
      }
    }while(!nameFlag||!pwdFlag);
    sout("登录成功!");

    for循环(本质是对while的简化,在已知循环次数的情况下使用较多)

    for(变量初始化;循环条件;变量更新){

      //循环内容代码

    }

    执行循环:变量初始化——条件判断——循环内容——变量更新——循环条件

    1.for循环表达式必须要写(即使不写内容也要写分号)

    2.3个表达式允许部分缺失

    for( ; ; ){(没有变量初始化,没有循环条件,是个死循环)

      sout("执行循环");

    }

    int i=1;
    for( ;i<=10;i++){
      sout(i);
      //循环条件中有一个i++,循环体中又一次i++,所以打印出来是1.3.5.7.9
      i++;  
    }
    //最后打印出来是11
    sout("退出循环后的i是:"+i);

    例子:输入班级的人数,并依次录入每个人的成绩,计算该班级平均分

    Scanner sc=new Scanner(System.in);
    sout("请输入班级的人数:");
    int n=sc.nextInt();
    //记录班级总分数
    int totalScore=0;
    for(int i=1;i<=n;i++){
      sout("请输入第"+i+"个人的成绩");
      int score=sc.nextInt();
      //记累计总分数
      totalScore+=score;
    }
    //记录平均分
    int avg=totalScore/n;
    sout("班级平均分为:"+avg);

    循环中的控制(循环的内容可以使用break终止,也可使用continue跳过;break表示跳出当前循环,continue表示跳过循环中的一次)

    break和continue后写任何代码都不会执行,都会报错

    例子:计算1-100的和,当和超过3000时,此时正在累加的数是多少?

    int sum=0;
    for(int i=0;i<=100;i++){
      sum+=i;
      //判断是否超过3000
      if(sum>3000){
        sout("正在累加的是:"+i+"当前和是:"+sum);
        //退出循环
        break;
      }
    }

    例子:打印1-10,跳过5不打印

    for(int i=1;i<=10;i++){
    if(i==5){
      //如果是5就跳过
      continue;
    }
    //不是5就打印
    sout(i);
    }

    例子:计算1-100所以奇数的和

    /********方法一********/
    int sum=0;
    for(int i=1;i<=100;i+2){
      sum+=i;
    }
    /*******方法二********/ int sum=0; for(int i=0;i<=100;i++){   //是偶数就跳过   if(i%2==0){     continue;   }   sum+=i; }
  • 相关阅读:
    JS播放视频代码
    kubernetes系列(小知识):kubectl命令自动补全
    docker(部署常见应用):docker部署mysql
    docker(部署常见应用):docker部署nginx
    docker(二):CentOS安装docker
    docker(一):docker是什么?
    kubernetes系列:(二)、kubernetes部署mysql(单节点)
    越早明白越好的人生道理(转载)
    JetBrains系列IDE快捷键大全(转载)
    spring-boot系列:(一)整合dubbo
  • 原文地址:https://www.cnblogs.com/gfl-1112/p/12593846.html
Copyright © 2020-2023  润新知