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

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

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

分析: 打印该乘法表要打印(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();
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值