Java打印九九乘法表的原理剖析

要求:用java代码打印九九乘法表

要求效果

1x1=1	
1x2=2	2x2=4	
1x3=3	2x3=6	3x3=9	
1x4=4	2x4=8	3x4=12	4x4=16	
1x5=5	2x5=10	3x5=15	4x5=20	5x5=25	
1x6=6	2x6=12	3x6=18	4x6=24	5x6=30	6x6=36	
1x7=7	2x7=14	3x7=21	4x7=28	5x7=35	6x7=42	7x7=49	
1x8=8	2x8=16	3x8=24	4x8=32	5x8=40	6x8=48	7x8=56	8x8=64	
1x9=9	2x9=18	3x9=27	4x9=36	5x9=45	6x9=54	7x9=63	8x9=72	9x9=81	

示例代码

public class ForTest {
     
    public static void main(String[] args) {
     
        for (int i = 1; i <= 9; i++) {
     
            for (int j = 1; j <= i; j++) {
     
            	//输出语句要去掉默认的ln,不然输出一个算式换一行
                System.out.print(j+"x"+i+"="+(j*i)+"\t");
            }
            //换行
            System.out.println();
        }
    }
}

原理剖析:

for循环最外层的i代表整个乘法表的第二个乘数,也是每行所打印乘法算式的个数

1 x i = ? i等于几,这一行就有几个乘法算式

第二个循环的j代表乘法表的第一个乘数,它控制乘法表的列数。

j x i = ?

当程序启动时,第一次进入循环,循环最外层的变量i等于1。第二个循环的变量j也等于1,那么就打印出来

1 x 1 = 1

也就是 j x i = 1,第一遍成功打印 1 x 1 = 1后,第二层的循环会进入一个判断,判断第一个乘数j是否小于或等于第二个乘数i。这时候的变量j经过第一次循环后的j++,已经变成了2,i这时候还是1。判断:

2 <= 1 吗?答案是:false

(这里简单起见,我就不说第一层循环和第二层循环了,就说外层循环和内层循环)

这里我们的内层循环只走了一次,第二次准备走的时候发现条件不成立,就跳出来我们的内层循环。内层循环下面还有一条代码,这条代码的意思就是换行。

//因为内层循环条件只成立一次,所以就只打印了如下信息:
1 x 1 = 1 //打印后走到下面的换行语句,然后开始打印第二行
//此处省略。。。

走完换行代码后,外层循环已经走完了第一遍,并且已经1++,这时i就等于2。当把2带入内层循环的时候,第一次判断(这时候的 j 已经初始化为1)

1 <= 2 吗?答案是:true

这时就把等于2的 i 带入我们的输出语句,输出结果为:

1 x 1 = 1

1 x 2 = 2

内层循环j++后由1变成了2,进入内层循环的第二次判断

2 <= 2 吗?答案是:true

再次判断通过(每一个输出语句后面都有一个 “\t” ,就是缩进)这时候的输出结果为:

1 x 1 = 1

1 x 2 = 2 2 x 2 = 4

当j等于3时,再去判断 3<=2 ,肯定不成立,所以就跳出了内层循环,继续走我们的换行语句,进行下一行的输出。直到我们的外层循环等于9后,输出:

1 x 9 = 9 2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81

一行打印9个乘法算式后,外层循环的判断不成立时,程序终止。

疑问解答

这时候可能有同学会想,内层循环为什么判断条件要用 <= 呢?

这是因为内层循环的 j 是控制这个程序要打印的列数,列数不能超过外层循环9的限制,它只能随着i的累加而累加。i的值是9 ,那么j就是9列。如果超过了这个限制,那就会打印第10列,就不叫九九乘法表了,它会打印到9x9的下一行。那就是:

1 x 10 = 10 2 x 10 = 20 。。。

你可能感兴趣的:(Java基础,java)