双重for循环重难点解析

来源:互联网 发布:淘宝导航图片 编辑:程序博客网 时间:2024/05/01 16:00

循环里面可以嵌套一个循环,叫做多重循环。多重循环中最简单的就是二重循环。

二重循环的难点是内层循环的循环条件,如何控制内层循环的次数。

for(int i;...;...){    for(int j,...,...){       ...;    }    ...;}

二重循环的公式:

j<m*i + n内层循环变量j<每轮循环递增次数*外层循环循环变量 + 第一轮循环次数

i和j分别是外层和内层循环的循环变量。
m是每轮循环递增的次数,如递减取负数。
n是第一轮循环的次数
使用条件:
1 循环必须是有规律的递增和递减。
2 i和j的初值必须一致,最好都是从0开始。
3 i和j的步进语句必须都是i++,每次循环都自增1。

案例一:打印以下图形,我们可以用上面提到的公式验证一下

***************
public class Star{       public static void main(String[] args){           for(int i=0;i<5;i++){ //外层循环控制行,循环5次               for(int j=0;j<i + 1;j++){ //j<m*i+n //j<i + 1;                   System.out.print("*");               }               System.out.println();           }       }}

案例二:
由案例一衍生,我们还可以用JAVA打印如下图形的菱形,同样适用于公式 j

     *           1    ***          2   *****         5  *******        7 *********       9  *******        7   *****         5    ***          3     *           1

分析:
星星第1行到第5行,每行递增2,所以m为2;
第5行到第9行,每行递减2;所以m为-2;

第1行到第5行,左边的空格逐行减1;
第5行到第9行,左边的空格逐行加1;

public class Star2 {    public static void main(String[] args) {        for(int i=0;i<5;i++){            for(int j=0;j<-i+4;j++){ //1 打印空格 m = -1;                System.out.print(" ");            }            for(int j=0;j<2*i+1;j++){//2 打印星星 m = 2; n = 1                System.out.print("*");            }            System.out.println(); // 3 换行        }        for(int i=0;i<4;i++){            for(int j=0;j<i+1;j++){ //1 打印空格 m = 1;n = 1                System.out.print(" ");            }            for(int j=0;j<-2*i+7;j++){//2 打印星星 m = -2; n = 7                System.out.print("*");            }            System.out.println(); // 3 换行        }    }}

我们还可以运用以上公式打印九九乘法表:

public class multi {//打印九九乘法表    public static void main(String[] args) { //定义主方法        for(int i=0;i<9;i++){ //写双重for循环            for(int j=0;j<i+1;j++){ //每轮循环递增1,所以m=1                 System.out.print((j+1)+"*"+(i+1)+"="+(i+1)*(j+1)+" ");            }            System.out.println();        }    }}