今天跟着教程练 for 循环,写了两道经典小题:打印九九乘法表 和 打印三角形。看着简单,但自己亲手敲一遍,才发现里面藏着不少门道,记录一下。
练习一:打印九九乘法表
代码
1 | package learn; |
运行结果
1 | 1*1=1 |
思路解析
- 外层循环 管「行」:
i从 1 到 9,一共 9 行。 - 内层循环 管「列」:
i1从 1 到i,也就是说第几行就打印几个式子,形成阶梯状。 System.out.print(...)不换行,配合\t制表符让每列对齐;- 一行打完,用
System.out.println()换行,进入下一行。
踩坑记录
- 一堆没用的 import。最开始代码里 IDE 自动导入了
javax.swing.plaf.synth.SynthColorChooserUI和java.util.zip.CheckedOutputStream,这两个包跟乘法表半毛钱关系都没有,纯属多余。菜鸟要学会看编辑器里的灰色提示,没用的 import 直接删掉,代码干净才是真的好。 - 变量名
i1不太优雅。外层用了i,内层顺手写了i1,虽然能跑,但规范写法是用j(或k)。命名清晰了,脑子才不会绕晕:i是行、j是列,一眼就懂。
练习二:打印三角形
代码
1 | package learn; |
运行结果
1 | # |
思路解析
三角形比乘法表难一点,因为它要居中。我的拆解思路是:每行分三步打印 —— 空格 + 左边的# + 右边的#。
- 外层循环
i从 0 到 4,控制一共 5 行; - 第一个内层循环:打印空格(从 5 递减到
i),把 # 往中间推; - 第二个内层循环:打印
i + 1个 #(左半边); - 第三个内层循环:打印
i个 #(右半边)。
每行的 # 总数 = (i+1) + i = 2i + 1,正好是奇数:第 1 行 1 个、第 2 行 3 个……第 5 行 9 个,天然构成等腰三角形的形状。
思考与改进
- 第一行打印了 6 个空格(因为
i1从 5 打到 0),其实多了一个,三角形整体会略微偏右一点。想让它更”正”,可以把第一个内层循环的条件调成i1 > i,少打一个空格即可。 - 可以把
5抽出来变成变量,甚至用Scanner接收用户输入的行数,这样就能打印任意高度的三角形,练手可以试试。
总结
两道题本质是同一个套路:外层循环管「有几行」,内层循环管「每行打什么、打多少」。先确定行数,再把每一行的结构拆开(乘法表是「数字×数字」,三角形是「空格 + 符号」),逐个内层循环搞定,最后别忘了换行。
for 循环嵌套看着吓人,画张表把 i 和 i1 的取值列出来,逻辑瞬间就通了。菜鸟加油,明天继续!