循环结构:在某些条件满足情况下,反复执行特定代码的功能
循环语句分类:
for
while
do...while
一.循环结构的4个要素
①.初始化条件
②.循环条件 ---boolean类型
③.循环体
④.迭代条件
注:通常情况下,循环结束都是因为②循环条件中,返回false了
二.for循环的结构
for(①:②:④){
③
}
执行过程:① - ② - ③ - ④ - ② - ③ - ④ - ,,, - ②
例: 测试执行过程
int num = 1;
for(System.out.print('a');num <= 3;System.out.print('c'),num++ ){
System.out.print('b');
结果:abcbcbc
例:测试break关键字
题目:输入2个正整数m和n,求其最大公约数和最小公倍数
Scanner scan = new Scanner(System.in);
System.out.println("请输入第一个正整数:");
int m = scan.nextInt();
System.out.println("请输入第二个正整数:");
int n = scan.nextInt();
//获取最大公约数
//1.获取两个数中的较小值
int min = (m <= n) ? m : n;
//2.遍历
for (int i = min; i >= 1; i--) {
if (m % i == 0 && n % i == 0) {
System.out.println("最大公约数为:" + i);
break;//一旦在循环中执行到break,就跳出循环
}
}
//获取最小公倍数
//1.获取两个数中的较大值
int max = (m >= n) ? m : n;
//2.遍历
for (int i = max; i <= m * n; i++) {
if (i % m == 0 && i % n == 0) {
System.out.println("最小公倍数:" + i);
break;
}
}
三.while循环
①.初始化条件
②.循环条件 ---boolean类型
③.循环体
④.迭代条件
①
while(②){
③;
④;
}
执行过程:① - ② - ③ - ④ - ② - ③ - ④ - ,,, - ②
例:求100内的偶数
int i = 1;
while (i <= 100) {
if (i % 2 == 0) {
System.out.println(i);
}
i++;
}
注:
1.while的迭代条件很重要,如果忘了写.很容易造成死循环
2.for循环可以和while循环互相转换
四:do...while循环
①.初始化条件
②.循环条件 ---boolean类型
③.循环体
④.迭代条件
①
do{
③;
④:
}while(②);
执行过程:① - ③ - ④ - ② - ③ - ④ - ,,, - ②
执行过程和for/while不一样,先执行一次循环体,所以do...while循环,至少执行一次循环体
例:求100内偶数
do{
if(num % 2 == 0){
System.out.println(num);
}
num++;
}while(num <= 100);
例:当不确定循环的次数,可以用while(true).求输入的正数和负数的个数
Scanner scan = new Scanner(System.in);
int postiveNumber =0;
int negativeNumber =0;
while(true){
System.out.println("please set a number");
int number = scan.nextInt();
if(number > 0){
postiveNumber++;
}else if(number < 0){
negativeNumber++;
}else{
break;
}
}
System.out.println("输入的正数个数为" + postiveNumber);
System.out.println("输入的负数个数为" + negativeNumber);
五.嵌套循环(多层循环)
1.将一个循环结构A声明在另一个循环结构B的循环体中,构成了循环嵌套
2.外层循环:循环结构B
内层循环:循环结构A
3.内层循序遍历一遍,外层循环执行一次.
4.假设外层循环执行M次,内层循环执行n次,内层循环实际执行M*n次
例:输出如下图形
******
******
******
******
for (int j = 1; j <= 4; j++) {
for (int i = 1; i <= 6; i++) {
System.out.print('*');
}
System.out.println();
}
六.break和continue的关键字的使用
适用范围 循环中使用的作用
break 循环结构中 结束当前循环
switch-case
continue 循环结构中 结束当次循环
break以及continue后不加别的执行语句.因为可能没机会执行,会报错
例:
for (int i = 1; i <= 10; i++) {
if (i % 4 == 0) {
//break; //结束当前循环
continue; //结束当前循环,1234567810
}
System.out.println(i);
}
结果输出:1 2 3
例2:嵌套循环测试
结束内层循环:
for (int i = 1; i <= 4; i++) {
for (int j =1;j <=10; j++){
if (j % 4 == 0) {
//break; //break默认跳出包裹距关键字的最近的一层循环
continue;
}
System.out.print(j);
}
System.out.println();
}
break结果:
123
123
123
123
continue结果:
123567910
123567910
123567910
123567910
结束外层循环: 加个标签label
label:for (int i = 1; i <= 4; i++) {
for (int j =1;j <=10; j++){
if (j % 4 == 0) {
//break; //break默认跳出包裹距关键字的最近的一层循环
//continue;
//break label;
continue label;
}
System.out.print(j);
}
System.out.println();
}
break label; 加个标签,结束指定标识的一层循环
结果:123
continue label; 结束指定标识的一层循环结构的当次循环
结果:123123123123