小学的九九乘法表还记得吧,不记得也没关系,上个图回忆一下:
前面学过for循环的简单使用,这里来点复杂的。想要写一九九乘法表,就得用到for循环的嵌套使用方法。
第一步:
可以看到,九九乘法表看上去像缺半的三角,补全完应该是个9x9的方形,如下图:
那么输出上图就很简单了,嵌套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列,只输出与行数相等的个数即可。
第二步:改变每行输出的列数与行数相等:
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