要求:用循环打印一个九九乘法表
标注:一道面试经常会考的题目,所以我们一起来弄懂这道题目吧
分析: 打印该乘法表要打印(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();
}
}