嵌套循环的使用: 将一个循环结构A声明在另一个循环结构B中,就构成了嵌套循环。 嵌套循环通常不会超过三层。 1.外层循环:循环结构B 内层循环:循环结构A 2.内层循环结构遍历一遍,只相当于外层循环体执行了一次 假设外层循环需要执行m次,内层需要循环n次。此时内层循环的循环体一共执行了m*n次。 3.技巧: 外层循环控制行数 内层循环控制列数


//熟悉理解过程
//for嵌套for

/*
        输出:
             ******
             ******
             ******
             ******
         */

        for (int j = 1; j <= 4; j++) {

            for (int i = 1; i <= 6; i++) {

                System.out.print("*");
            }
            System.out.println();
        }


100以内的所有质数的输出[指定范围内] 质数的概念:(素数) 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 思维:从2开始一直到这个数-1为止,都不能被这个数本身整除。 最小的质数是2


//boolean isFlag = true;//做一个标识,标识i是否被j除尽,一旦除尽,修改其值

        //遍历100内的数
        for (int i = 2; i <= 100; i++) {
            //如果flag在这里就不需要在后面重置了
            boolean isFlag = true;

            //j:被i去除
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    isFlag = false;
                }
            }
            //
            if (isFlag == true) {
                System.out.println(i);
            }
            //重置flag[如果不重置的话,在进到4时就会停止]
            //isFlag = true;
        }

这里采用了优化1 

//遍历100内的数
        for (int i = 2; i <= 100; i++) {
            boolean isFlag = true;

            //j:被i去除
            //Math.sqrt表示开方
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    isFlag = false;
                    break;//优化方式一:只针对非质数的自然数是有效的【原因是,一旦检测到一个就直接退出,不再每一个遍历一遍】
                }
            }
            //
            if (isFlag == true) {
                System.out.println(i);
            }
            //重置flag[如果不重置的话,在进到4时就会停止]
            //isFlag = true;

优化方式2

int count=0;

        //遍历100内的数
        for (int i = 2; i <= 100; i++) {
            boolean isFlag = true;

            //j:被i去除
            //Math.sqrt表示开方
            //优化方式二:对本身是质数的自然数是有效的
            for (int j = 2; j <= Math.sqrt(i); j++) {
                if (i % j == 0) {
                    isFlag = false;
                    break;
                }
            }
            //
            if (isFlag == true) {
                System.out.println(i);
            }
            //重置flag[如果不重置的话,在进到4时就会停止]
            //isFlag = true;
        }

关于break和continue的说明:


break和continue关键字的使用: 使用范围 循环中使用的作用 相同点 break: switch-case 结束当前循环 关键字后面不能声明执行语句 循环结构中 continue: 循环结构中 结束当此循环 关键字后面不能声明执行语句


说明: break:默认跳出包裹此关键字最近的一层循环.//后面可以加标识,结束指定标识的那一层循环结构。 continue:跳出本次。//结束指定意识的一层循环结构的当此循环。


代码示例:

for (int i = 1; i <= 10; i++) {
            if (i % 4 == 0) {
                //break;//只有123
                continue;//只是过滤掉符合条件的部分。然后开始下一次循环。
            }
            System.out.println(i);
        }

优化方式3:

说明:这里的label作用是标志,在后面的continue中就可以跳出指定循环

int count = 0;//记录个数

        //遍历100内的数
        label:for (int i = 2; i <= 100; i++) {

            //j:被i去除
            //Math.sqrt表示开方
            //优化方式二:对本身是质数的自然数是有效的
            for (int j = 2; j <= Math.sqrt(i); j++) {
                if (i % j == 0) {
                    continue label;
                }
            }
            //能执行到这个步骤的都是质数
            count++;
        }
        System.out.println("质数个数有:"+count);