Java基础04–循环结构
循环结构可以控制一段代码重复执行。
循环结构有for循环、while循环、do-while循环。
一个循环是由四部分构成的,分别是循环变量、循环条件、循环体、改变循环变量的值。
- 循环变量,循环变量用于控制循环次数。
- 循环条件,循环条件用来判断循环是否继续。、
- 循环体,循环体是循环条件为true时,要执行的代码段。
- 改变循环变量的值,只有循环变量的值能够改变,循环才有结束的时候,否则是死循环。
1. while 循环结构
1.语法规则
2.执行过程
代码的执行流程如下图所示:
按照① ②③④ ②③④ … 的流程执行
如果②步骤为true,才循环执行③④步骤
如果②步骤为false,则循环结束
举例
1.计算1~10的和
2.计算7 的阶乘
// 1~10的和
while{
int i = 1,sum = 0;
while(i <= 100){
sum += i;
i ++;
}
}
System.out.println(sum);
// 7的阶乘
int i = 1,mul = 1;
while(i <= 7){
mul *= i;
i ++;
}
System.out.println(mul);
注意
- 先判断,后执行
- 若循环条件为true,表示执行循环,为false则表示终止循环
- 若循环一直为true,这为死循环
2. do - while 循环结构
至少得循环一次
1.语法规则
2.执行过程
do-while循环的执行流程,是按照① ②③④ ②③④… 的顺序执行的。
举例
1.计算1~10的和
2.计算7的阶乘
//1~10的和
int i = 1,sum = 0;
do{
sum += i;
i++;
}while(i <= 10);
System.out.println(sum);
// 7的阶乘
int i = 1,mul = 1;
do{
mul *= i;
i ++;
}while(i <= 7);
System.out.println(mul);
注意:
- do-while循环的特点是先执行,再判断的。即使条件不成立,也会先执行一次。
- 条件为true会成死循环
3. for循环结构
1.语法规则
for (表达式1; 表达式2; 表达式3) {
循环体
}
// 表达式1 : 循环变量的初始化
// 表达式2 : 循环条件
// 表达式3 : 改变循环变量的值
// 循环体 :要重复循环的部分
表达式1 --> 表达式2 --> 循环体 --> 表达式3 --> 表达式2 --> 循环体 --> 表
达式3 --> 表达式2
// 总结
// for循环格式:
for (初始化语句; 循环条件; 迭代语句) {
循环体语句(重复执行的代码);
}
2.执行流程
如下图所示,是按照下面的① ② ③ ④, ② ③ ④… 的顺序来执行的;
当②条件为true时,再依次执行③④代码,然后回到②继续判断
当②条件为false时,就结束循环
举例
1.求1~100内的奇数和
// for 1~100奇数和
int sum = 1;
for (int i = 1;i <=100;i ++){
if(i % 2 != 0){
sum += i;
}
}
System.out.println(sum);
注意:
- 表达式1,是声明语句,可以空着
- 执行表达式2时,表达式2的结果是boolean值,值为true时执行循环体
- 循环体执行完毕后,执行表达式3,一般是为了修改变量,也可以空着;再执行表达式2,依次循环,直到布尔值为false
- 如果不写第二部分,则程序会陷入死循环
4.三种循环比较
- for循环 和 while循环(先判断后执行);
do…while (先执行后判断)
- for循环和while循环的执行流程是一模一样的,功能上无区别,for能做的while也能做,反之亦然。
如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环
- for循环中控制循环的变量只在循环中使用
while循环中,控制循环的变量在循环后还可以继续使用
5.多重循环
多重循环是指在一个循环语句的循环体中再包含循环语句,也称嵌套循环。被包含的循环称为内循环,包含其他循环的循环称为外循环
举例
1.输出99乘法表
// 1*1=1
// 2*1=2 2*2=4
// 3*1=3 3*2=6 3*3=9
// 4*1=4 4*2=8 4*3=12 4*4=16
// 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
// 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
// 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
// 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
// 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
for (int i = 1;i <= 9;i ++){
for (int j = 1; j <= i;j++){
System.out.print(i + "*" + j + "=" + i * j + "\t");
}
System.out.println();
}
2.用**输出三角形
*
* *
* * *
* * * *
* * * * *
for (int r = 1; r <= 5; r ++){
for (int k = 1;k <= r; k ++){
System.out.print("* ");
}
System.out.println();
}
对于嵌套循环重点理解这句话:外部循环每循环一次,内部循环会全部执行完一轮。
6.跳转语句
1.标签
标签可以放在for、while或do语句之前,其语法格式为:
标签: 语句;
2. break 、continue
break作用:跳出并结束当前所在循环的执行
continue作用:结束本次循环,进入下一次循环
3. return
return返回表示方法结束返回到方法的调用处
4.区分:
break: 当前循环终止
continue:跳过本次循环,进行下一次循环
return:方法结束
举例
1.99乘法表
row:for (int i = 1; i <= 9; i ++){
for (int j = 1; j <= 9; j ++){
if (j > i){
// 结束内部循环,进行下一次外循环
// break row;
System.out.println();
continue row;
}
System.out.print(i + " * " + j + " = " + i * j + "\t");
}
}
2.找出1~100内的所有素数(// 1~100以内素数的个数)
// 找出1~100内的所有素数
// int count = 0;
int sum = 0;
for (int num = 2; num <= 100; num ++) {
boolean flag = true;
for (int i = 2; i < num; i ++) {
if (num % i == 0) {
flag = false;
break;
}
}
if (flag) {
System.out.println(num + "是素数");
// count ++;
}
}
// System.out.println(count);
7.循环结构总结
什么是流程控制
答:流程控制是用来控制程序的执行顺序的
分支结构if和switch,如何选择?
答:if分支:一般用于对一个范围进行判断
switch分支:对一个一个值进行匹配
for循环和while循环、do-while如何循环
答:知道循环次数用for、不知道循环次数用while;
想要先执行,再判断,用do-while
stem.out.println(count);
7.循环结构总结
什么是流程控制
答:流程控制是用来控制程序的执行顺序的
分支结构if和switch,如何选择?
答:if分支:一般用于对一个范围进行判断
switch分支:对一个一个值进行匹配
for循环和while循环、do-while如何循环
答:知道循环次数用for、不知道循环次数用while;
想要先执行,再判断,用do-while