基本语法-流程控制-循环结构

一、循环结构的四要素

  • ①初始化条件
  • ②循环条件-是boolean类型
  • ③循环体
  • ④迭代条件

说明:通常情况下,循环结果结束都是因为②中循环条件返回false了

二、三种循环结构

1.for循环结构

  • 结构
for(①;②;④){
	③;
}
  • 执行过程:①-②-③-④-②-③-④-...-②

2.while循环结构

  • 结构
①;
while(②){
        ③;
	④;
}
  • 执行过程:①-②-③-④-②-③-④-...-②
  • 说明:写while循环千万小心不要丢了迭代条件,一旦丢了,就可能导致死循环

3.do-while循环结构

  • 结构
①;
do{
	③;
        ④;
}while(②);
  • 执行过程:①-③-④-②-③-④-②-...-②
  • 说明:至少会执行一次循环体,开发中使用for和while更多一些,较少使用do-while

4.for和while循环总结

  • ①开发中,基本上我们都会从for、while中进行选择,实现循环结构
  • ②for和while循环是可以相互转换的
  • ③区别for循环和while循环的初始化条件部分的作用范围不同
  • ④我们写程序时,要避免出现死循环

三、“无限循环”结构:while(true)或for(;😉

如何结束一个循环结构?

  • 方式一:当循环条件为false
  • 方式二:在循环体中,执行break

四、嵌套循环

1.嵌套循环-将一个循环结构A声明在另一个循环结构B的循环体内,就构成了嵌套循环

  • 内层循环:循环结构A
  • 外层循环:循环结构B

2.说明

  • ①内层循环结构遍历一遍,只相当于外层循环循环体执行了一次
  • ②假设外层循环需要执行m次,内层循环需要执行n次,此时内层循环的循环体一共执行了m*n次

3.技巧

外层循环控制行数,内层循环控制列数

4.【典型练习】

  • 练习一:
/*
******
******
******
******
*/
for(int i = 1;i <= 4;i++){
  for(int j = 1;j <= 6;j++){
    System.out.print("*");
  }
  System.out.println();
}
  • 练习二:
/*
 *
 **
 ***
 ****
 *****
 ******
 */
for(int i = 1;i <= 6;i++){
   for (int j = 1;j <= i;j++){
      System.out.print("*");
    }
    System.out.println();
}
  • 练习三:
 /*
  *****
  ****
  ***
  **
  *
  */
for(int i = 1;i <= 5;i++){
   for (int j = 1;j <= 6 - i;j++){
       System.out.print("*");
      }
      System.out.println();
     }
    System.out.println();
    System.out.println();
  • 练习四:
    /*
     *
    * *
   * * *
  * * * *
 * * * * *
* * * * * *
 * * * * *
  * * * *
   * * *
    * *
     *
     */
//上半部分
for(int i = 1;i <= 6;i++){
  for(int j = 1;j <= 6 - i;j++){
    System.out.print(" ");
  }
  for(int m = 1;m <= i;m++){
    System.out.print("* ");
  }
 System.out.println();
}
//下半部分
for(int i = 1;i <= 5;i++){
  for(int j = 1;j <= i;j++){
    System.out.print(" ");
  }
  for(int m = 1;m <= 6 - i;m++){
    System.out.print("* ");
  }
 System.out.println();
}
  • 练习五:
//九九乘法表
for(int i = 1;i <= 9;i++){
  for(int j = 1;j <= i;j++){
    System.out.print(i + "*" + j + "=" + (i * j) + " ");
  }
 System.out.println();
}
  • 练习六:
//100以内所有质数的输出
//获取当前时间距离1970-01-01 00:00:00的毫秒数
long start = System.currentTimeMillis();
//质数的个数
int count = 0;
//遍历100以内的自然数
lable:for(int i = 2;i <= 100;i++){
        for(int j = 2;j <= Math.sqrt(i);j++){
        //i被除尽
        if(i % j == 0){
           continue lable;
       	}
        }
//能执行到此步骤的,都是质数
count++;
}
//获取当前时间距离1970-01-01 00:00:00的毫秒数
long end = System.currentTimeMillis();
System.out.println("质数的个数为:" + count);
System.out.println("所消耗的时间为:" + (end - start));

五、补充-衡量一个功能代码的优劣

  • 1.正确性
  • 2.可读性
  • 3.健壮性
  • 4.高效率和低存储:时间复杂度、空间复杂度(衡量算法好坏的标准)

六、如何理解流程控制的练习

流程控制结构的使用能力 + 算法逻辑能力

posted @ 2021-06-17 10:05  犄角旮旯是程序媛吖  阅读(120)  评论(0编辑  收藏  举报