11.程序流程控制:循环结构

循环结构:在某些条件满足情况下,反复执行特定代码的功能

循环语句分类:

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

你可能感兴趣的:(11.程序流程控制:循环结构)