小学的九九乘法表还记得吧,不记得也没关系,上个图回忆一下:

Java流程控制09 - For循环打印九九乘法表

前面学过for循环的简单使用,这里来点复杂的。想要写一九九乘法表,就得用到for循环的嵌套使用方法。

第一步:

可以看到,九九乘法表看上去像缺半的三角,补全完应该是个9x9的方形,如下图:

Java流程控制09 - For循环打印九九乘法表

那么输出上图就很简单了,嵌套for循环,一个控制列数,一个控制行数

package com.zctou.structure;

public class ForDemo05 {
    public static void main(String[] args) {
        for (int i = 1; i <=9; i++) { //循环输出9行
            for (int j = 1; j <= 9; j++) { //循环输出9列(就是每行的个数)
                System.out.print(j+"*"+i+"="+j*i+"\t"); //法表每次都从1开始,到9结束
            }
            System.out.println(); //换行
        }
    }
}

输出:

1*1=1    2*1=2    3*1=3    4*1=4    5*1=5    6*1=6    7*1=7    8*1=8    9*1=9    
1*2=2    2*2=4    3*2=6    4*2=8    5*2=10    6*2=12    7*2=14    8*2=16    9*2=18    
1*3=3    2*3=6    3*3=9    4*3=12    5*3=15    6*3=18    7*3=21    8*3=24    9*3=27    
1*4=4    2*4=8    3*4=12    4*4=16    5*4=20    6*4=24    7*4=28    8*4=32    9*4=36    
1*5=5    2*5=10    3*5=15    4*5=20    5*5=25    6*5=30    7*5=35    8*5=40    9*5=45    
1*6=6    2*6=12    3*6=18    4*6=24    5*6=30    6*6=36    7*6=42    8*6=48    9*6=54    
1*7=7    2*7=14    3*7=21    4*7=28    5*7=35    6*7=42    7*7=49    8*7=56    9*7=63    
1*8=8    2*8=16    3*8=24    4*8=32    5*8=40    6*8=48    7*8=56    8*8=64    9*8=72    
1*9=9    2*9=18    3*9=27    4*9=36    5*9=45    6*9=54    7*9=63    8*9=72    9*9=81    

补全的方形已经被打印出来。

仔细观察,发现每行输出的列数刚好就是那一行的行数。如第1行输出1列,第3行输出3列,第6行输出6列,如此类推。。也就是说每行不再输出9列,只输出与行数相等的个数即可。

Java流程控制09 - For循环打印九九乘法表

 第二步:改变每行输出的列数与行数相等:

package com.zctou.structure;

public class ForDemo05 {
    public static void main(String[] args) {
        for (int i = 1; i <=9; i++) { //循环输出9行
            for (int j = 1; j <= i; j++) { //不再输出9列,输出与行数i相等的列数即可(就是每行的个数)
                System.out.print(j+"*"+i+"="+j*i+"\t");
            }
            System.out.println(); //换行
        }
    }
}

输出:

1*1=1    
1*2=2    2*2=4    
1*3=3    2*3=6    3*3=9    
1*4=4    2*4=8    3*4=12    4*4=16    
1*5=5    2*5=10    3*5=15    4*5=20    5*5=25    
1*6=6    2*6=12    3*6=18    4*6=24    5*6=30    6*6=36    
1*7=7    2*7=14    3*7=21    4*7=28    5*7=35    6*7=42    7*7=49    
1*8=8    2*8=16    3*8=24    4*8=32    5*8=40    6*8=48    7*8=56    8*8=64    
1*9=9    2*9=18    3*9=27    4*9=36    5*9=45    6*9=54    7*9=63    8*9=72    9*9=81    

PS: 改进:

从上面 第一步的输出结果可以看到,当输出到达行数与列数相当的时候(1x2,2x2,3x3...),后面的ixj顺序与示例图是相反的。

怎样才能做到与示例图一样呢,很简单,加个判断即可。

package com.zctou.structure;

public class ForDemo05 {
    public static void main(String[] args) {
        for (int i = 1; i <=9; i++) { //循环输出9行
            for (int j = 1; j <= 9; j++) { //循环输出9列(就是每行的个数)
                if(j<=i) {
                    System.out.print(j + "*" + i + "=" + j * i + "\t"); //行数列数哪个小哪个排前面输出
                } else {
                    System.out.print(i + "*" + j + "=" + j * i + "\t"); //列数比行数大时,行数放*前面
                }
            }
            System.out.println(); //换行
        }
    }
}

输出:

1*1=1    1*2=2    1*3=3    1*4=4    1*5=5    1*6=6    1*7=7    1*8=8    1*9=9    
1*2=2    2*2=4    2*3=6    2*4=8    2*5=10    2*6=12    2*7=14    2*8=16    2*9=18    
1*3=3    2*3=6    3*3=9    3*4=12    3*5=15    3*6=18    3*7=21    3*8=24    3*9=27    
1*4=4    2*4=8    3*4=12    4*4=16    4*5=20    4*6=24    4*7=28    4*8=32    4*9=36    
1*5=5    2*5=10    3*5=15    4*5=20    5*5=25    5*6=30    5*7=35    5*8=40    5*9=45    
1*6=6    2*6=12    3*6=18    4*6=24    5*6=30    6*6=36    6*7=42    6*8=48    6*9=54    
1*7=7    2*7=14    3*7=21    4*7=28    5*7=35    6*7=42    7*7=49    7*8=56    7*9=63    
1*8=8    2*8=16    3*8=24    4*8=32    5*8=40    6*8=48    7*8=56    8*8=64    8*9=72    
1*9=9    2*9=18    3*9=27    4*9=36    5*9=45    6*9=54    7*9=63    8*9=72    9*9=81    
文章目录