双重for循环重难点解析

首先给大家推荐一下我老师大神的人工智能教学网站。教学不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵黄段子!点这里可以跳转到网站

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

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

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();
        }

    }
}

点这里可以跳转到人工智能网站

发表评论