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

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

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

}
}

双重for循环重难点解析_九九乘法表