Java基础之逐步击破----九九乘法表

来源:互联网 发布:linux文件内容复制 编辑:程序博客网 时间:2024/05/01 09:00

要求:用循环打印一个九九乘法表

标注:一道面试经常会考的题目,所以我们一起来弄懂这道题目吧

分析: 打印该乘法表要打印(1+2+3+…+9) = 45次,如果一一打印必然非常麻烦
所以用循环来做,此时for循环是最适合这道题的

//核心代码public static void main(String[] args){    int num = 0;      //用来接收乘法的值    for(int i = 1; i <= 9; i++)    {        for(int j = 1; j <= i; j++)        {            num = i * j;            //此处用print,是因为一行,需要打印多个结果            System.out.print(j + " * " + i + "=" + num + "  ");        }        //在此处换行        System.out.println();    }}

这里写图片描述

探讨:九九乘法表其实并不难,理解双重for()循环怎么使用,就能打印出来,
但是如果让你打印一个对称的九九乘法表(如下图),应该怎么做呢?
如图所展示:
这里写图片描述

接下来让我们击破,这一小问题吧!

    public static void main(String[] args) {        int num = 0;      //用来接收乘法的值        for(int i = 1; i <= 9; i++)        {            for(int j = 1; j <= i; j++)            {                num = i * j;                //此处用print,是因为一行,需要打印多个结果                System.out.print(j + "*" + i + "=" + num + "  ");            }            //在此处换行            System.out.println();        }        //在这里加一个减法循环,也就是让乘法表从高到低依次打印        for(int i = 8; i > 0; i--)        {            for(int j = 1; j <= i; j++)            {                num = i * j;                System.out.print(j + "*" + i + "=" + num + "  ");            }            System.out.println();        }    }

其实所用的方法也是for()循环,只不过是,用了减法条件来做,有逆向思维。
如:

for(int i = 100; i > 0; i++){    System.out.println(i);}

这段代码其实就是,从100打印到1,倒序来打印的。
有点难以理解。

如果能够理解恒对称九九乘法表的话,那么我们来进入下一个难题吧!
蝴蝶结舅舅乘法表

只需要在循环换行之前,加上这段代码就行了

//          **** 用\t缩进,以达到最右端的效果, (9-i)*2意思是要打印这么多的空格            for(int k = 1; k <= (9-i)*2; k++)            {                System.out.print("\t\t");            }//          ****接下来就是打印右侧的九九乘法表了            for(int m = i; m > 0; m--)            {                num = m * i;                System.out.print("\t" + m + "*" + i + "=" + num);            }

结果展示:
如此图:

总代码为:

    public static void main(String[] args) {        int num = 0;      //用来接收乘法的值        for(int i = 1; i <= 9; i++)        {            for(int j = 1; j <= i; j++)            {                num = i * j;                //此处用print,是因为一行,需要打印多个结果                System.out.print(j + "*" + i + "=" + num + "\t");            }//          **** 用\t缩进,以达到最右端的效果, (9-i)*2意思是要打印这么多的空格            for(int k = 1; k <= (9-i)*2; k++)            {                System.out.print("\t\t");            }//          ****接下来就是打印右侧的九九乘法表了            for(int m = i; m > 0; m--)            {                num = m * i;                System.out.print("\t" + m + "*" + i + "=" + num);            }            //在此处换行            System.out.println();        }//      打印下面的九九乘法表        for(int i = 8; i > 0; i--)        {            for(int j = 1; j <= i; j++)            {                System.out.print(j + "*" + i + "=" + (i*j) + "\t");            }//          ****用\t缩进,以达到最右端的效果, (9-i)*2意思是要打印这么多的空格            for(int k = 1; k <= (9-i) * 2; k++)            {                System.out.print("\t\t");            }//          ****打印右侧的九九乘法表            for(int m = i; m > 0; m--)            {                num = m * i;                System.out.print("\t" + m + "*" + i + "=" + num);            }            System.out.println();        }    }