【Java菜鸟日记3】java的for循环练习打印乘法表和三角形


今天跟着教程练 for 循环,写了两道经典小题:打印九九乘法表打印三角形。看着简单,但自己亲手敲一遍,才发现里面藏着不少门道,记录一下。

练习一:打印九九乘法表

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
package learn;

public class xfb99 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {

for (int i1 = 1; i1 <= i; i1++) {
System.out.print(i1 + "*" + i + "=" + i1 * i + "\t");
}
System.out.println();
}
}
}

运行结果

1
2
3
4
5
6
7
8
9
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

思路解析

  • 外层循环 管「行」:i 从 1 到 9,一共 9 行。
  • 内层循环 管「列」:i1 从 1 到 i,也就是说第几行就打印几个式子,形成阶梯状。
  • System.out.print(...) 不换行,配合 \t 制表符让每列对齐;
  • 一行打完,用 System.out.println() 换行,进入下一行。

踩坑记录

  1. 一堆没用的 import。最开始代码里 IDE 自动导入了 javax.swing.plaf.synth.SynthColorChooserUIjava.util.zip.CheckedOutputStream,这两个包跟乘法表半毛钱关系都没有,纯属多余。菜鸟要学会看编辑器里的灰色提示,没用的 import 直接删掉,代码干净才是真的好。
  2. 变量名 i1 不太优雅。外层用了 i,内层顺手写了 i1,虽然能跑,但规范写法是用 j(或 k)。命名清晰了,脑子才不会绕晕:i 是行、j 是列,一眼就懂。

练习二:打印三角形

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package learn;

public class PrintDealt {
public static void main(String[] args) {

for (int i = 0; i < 5; i++) {
System.out.println();
for (int i1 = 5; i1 >= i; i1--) {
System.out.print(" ");
}
for (int i1 = 0; i1 <= i; i1++) {
System.out.print("#");
}
for (int i1 = 0; i1 < i; i1++) {
System.out.print("#");
}
}
}
}

运行结果

1
2
3
4
5
    #
###
#####
#######
#########

思路解析

三角形比乘法表难一点,因为它要居中。我的拆解思路是:每行分三步打印 —— 空格 + 左边的# + 右边的#

  • 外层循环 i 从 0 到 4,控制一共 5 行;
  • 第一个内层循环:打印空格(从 5 递减到 i),把 # 往中间推;
  • 第二个内层循环:打印 i + 1 个 #(左半边);
  • 第三个内层循环:打印 i 个 #(右半边)。

每行的 # 总数 = (i+1) + i = 2i + 1,正好是奇数:第 1 行 1 个、第 2 行 3 个……第 5 行 9 个,天然构成等腰三角形的形状。

思考与改进

  1. 第一行打印了 6 个空格(因为 i1 从 5 打到 0),其实多了一个,三角形整体会略微偏右一点。想让它更”正”,可以把第一个内层循环的条件调成 i1 > i,少打一个空格即可。
  2. 可以把 5 抽出来变成变量,甚至用 Scanner 接收用户输入的行数,这样就能打印任意高度的三角形,练手可以试试。

总结

两道题本质是同一个套路:外层循环管「有几行」,内层循环管「每行打什么、打多少」。先确定行数,再把每一行的结构拆开(乘法表是「数字×数字」,三角形是「空格 + 符号」),逐个内层循环搞定,最后别忘了换行。

for 循环嵌套看着吓人,画张表把 ii1 的取值列出来,逻辑瞬间就通了。菜鸟加油,明天继续!


文章作者: 上江 Yayoi
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 上江 Yayoi !
  目录