基本语法-流程控制-循环结构
一、循环结构的四要素
- ①初始化条件
- ②循环条件-是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.高效率和低存储:时间复杂度、空间复杂度(衡量算法好坏的标准)
六、如何理解流程控制的练习
流程控制结构的使用能力 + 算法逻辑能力
作者:犄角旮旯是程序媛吖
版权:本文版权归作者和博客园所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。