Loading

04、循环结构

1、循环的概念

概念 :

  通过某个条件,重复的执行一段逻辑代码。

 

2、while循环

2.1、组成部分

语法:

  while(布尔表达式){
    //逻辑代码(循环操作)
  }

执行流程

  先对布尔表达式进行判断,结果为true,则执行逻辑代码。

  本次执行完毕后,再次进行判断,结果仍旧为true,则再次执行逻辑代码。

  直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码。

        //打印100遍HelloWorld
        int i = 1;
        while (i <= 100) {
            System.out.println("HelloWorld");
            i++;
        }
        System.out.println("程序结束...");

2.2、循环特点

(1)以下代码,哪一行是初始部分?哪一行是迭代部分?

int a = 1;
int b = 1;
int c = 1;
while (c <= 100) {
System.out.println("He1loworld");
a++;
b++;
c++;
}
// 被循环条件判断的变量,才是初始部分和迭代部分!

(2)首次即有入口条件,先判断、再执行,适用于循环次数明确的情况。

int i = 1000;
// 首次判断不满足,则一次都不会执行。 (执行次数:0~n次)
while(i <= 100){
System.out.println( "He1lowor1d");
}
System.out.println("程序结束");

2.3、求和

        //求1~100之间所有数字的总和
        //1.循环100次的问题
        //2.循环的过程中进行求和
        int i = 1;//初始部分
        int sum = 0;
        while (i <= 100) {//循环条件 
            sum = sum + i;//循环操作
            i++; //迭代部分
        }
        System.out.println("总和为:" + sum);
        System.out.println("程序结束...");

2.4、求偶数的和

        //  求1~100之间所有偶数的和
        //  方案一:获取所有的偶数,相加求和
        //  方案二:依旧获取1~100之间的每一个数字,进行偶数的判断,满足条件之后,相加求和
        int i = 1;
        int sum = 0;
        while (i <= 100) {
            if (i % 2 == 0) {//判断偶数
                //求和
                sum = sum + i;
            }
            i++;
        }
        System.out.println("偶数的和:" + sum);

3、do while循环

语法:

 

do{
逻辑代码(循环操作)
}while(布尔表达式);

执行流程:

  先执行一次循环操作之后,再进行布尔表达式的判断。

  如果结果为true,则再次执行循环操作。

  如果结果为false,才会退出循环结构,执行后续代码。

public class TestDowhile {
  public static void main(String[] args){
    int i=1;
    do{ //直接执行循环操作,首次没有入口条件。
      System.out.println( "Hellowor1d"+i);
      i++;
    }while(i<=100); // 判断满足,则循环。不满足,则至少执行一次。(执行次数:1~n次)
  }
}

特点:首次没有入口条件,先执行,再判断。

应用场景:适用于循环次数不明确的情况。

        Scanner input = new Scanner(System.in);
        char answer;//记录老师当次的评语
        do {
            System.out.println("抄写一遍作业代码......");
            System.out.println("请输入老师评语:");
            answer = input.next().charAt(0);//输入y,表示及格,退出循环﹔否则继续循环
        } while (answer != 'y');
        System.out.println("作业已完成");

4、for循环

语法:

for(初始部分;循环条件;迭代部分){
  //循环操作
}

执行流程:

  首次执行初始部分(仅一次)。

  对布尔表达式进行判断,结果为true,则执行逻辑代码。

  本次执行完毕后,执行迭代部分,再次判断,结果仍旧为true,则再次执行逻辑代码。

  直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码。

// 1.初始部分(只执行一次) ⒉循环条件 4.迭代部分
for (int i = 1; i <= 100; i++) {
//3.循环操作
System.out.println("He1lowor1d");
}
System.out.println("程序结束");
// for循环与while循环相同,首次判断不满足,则一次都不会执行。(执行次数:0~n次)

特点: 

  首次即有入口条件,先判断、再执行,适用于循环次数明确的情况。

        //计算5位同学的平均分
        Scanner scanner = new Scanner(System.in);
        double sum = 0.0;//总和
        for (int i = 1; i <= 5; i++) {
            //1.循环控制台录入分数
            System.out.println("请输入第" + i + "位同学的成绩:");
            double score = scanner.nextDouble();
            //2.累加总和
            sum = sum + score;
        }
        double avg = sum / 5;
        System.out.println("平均分:" + avg);

5、流程控制

5.1、break

  break:终止、跳出switch、循环结构。

        Scanner input = new Scanner(System.in);
        //控制台录入5位同学成绩,
        // 如果有任何一位同学的成绩产生非法数据(不满足0~100之间的数字)时,
        // 将直接退出整合循环操作
        double sum = 0.0;
        boolean flag = true;//合法
        for (int i = 1; i <= 5; i++) {
            System.out.println("请输入第" + i + "位同学的成绩:");
            double score = input.nextDouble();
            if (score < 0 || score > 100.0) {
                flag = false;//非法数据break;
                break;
            }
            sum = sum + score;
        }

        if (flag == true) { //根据flag标记决定是否需要计算和输出平均分
            double avg = sum / 5;
            System.out.println("平均分:" + avg);
        } else {
            System.out.println("非法数据,请重新运行程序计算平均分");
        }

5.2、continue

  continue : 结束本次、进入下一次循环。

        Scanner input = new Scanner(System.in);
        //控制台录入5位同学成绩,
        // 如果有任何一位同学的成绩产生非法数据(不满足0~100之间的数字)时,
        // 结束本次的统计,进入下一次循环当中
        double sum = 0.0;
        for (int i = 1; i <= 5; ) {
            System.out.println("请输入第" + i + "位同学的成绩:");
            double score = input.nextDouble();
            if (score < 0 || score > 100.0) {
                // 非法数据
                continue;
            }
            sum = sum + score;
            i++;
        }
        double avg = sum / 5;
        System.out.println("平均分:" + avg);

6、嵌套循环

 

        Scanner input = new Scanner(System.in);
        for (int k = 1; k <= 3; k++) {
            System.out.println(" ---第" + k + "个班---");
            //求一个班,5位同学的平均成绩
            double sum = 0.0;
            for (int i = 1; i <= 5; i++) {
                System.out.println("请输入第" + i + "位同学的成绩:");
                double score = input.nextDouble();
                sum += score;
            }
            double avg = sum / 5;
            System.out.println("第" + k + "班5位同学的平均分: " + avg);

        }
        //外层控制行数
        for (int i = 1; i <= 5; i++) { //i= 6
            //内层控制列数
            for (int j = 1; j <= i; j++) {//
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("程序结束");
        for (int i = 1; i <=9; i++) {
            for (int j = 1; j <=i ; j++) {
                System.out.print(j+"*"+i+"="+(j*i) +"\t");
            }
            System.out.println();
        }

7、总结

(1)循环的概念:

  通过某个条件,重复的执行一段逻辑代码。

(2)while循环:

  while(){ }

(3)do while循环:

  do{ }while;

(4)for循环:

  for(初始;条件;迭代){操作;}

(5)流程控制关键字:

  break、continue

(6)嵌套循环:

  在一个完整的循环结构中,嵌套另一个完整的循环结构。

posted @ 2021-06-26 21:57  菜鸟的道路  阅读(148)  评论(0)    收藏  举报