双层for循环需外层每轮结束前调用system.out.println()换行;内层用print()控制不换行,避免混用print()和println()导致空行。

Java 双层 for 循环怎么写才不打印成一横排
根本原因是内层循环没换行,System.out.print() 会持续输出在同一行。只要外层每轮结束前加一次 System.out.println(),就能“折行”形成三角形结构。
- 用
print()而不是println()控制单个字符不换行 - 外层循环每迭代一次,必须显式调用一次
println() - 别在内层循环里混用
print()和println(),容易多出空行
for (int i = 1; i <h3>为什么 i 和 j 的起始值常从 1 开始而不是 0</h3> <p>从 1 开始更贴合“第 i 行打印 i 个星号”的直觉逻辑,避免后续计算时反复 +1/-1。若从 0 开始,<code>j 或 <code>j 容易看错边界,尤其调试时数行数容易对不上。</code></code></p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill9040" title="JavaStoryDevelop"><img src="https://img.php.cn/upload/skill/000/000/081/179238966962420.jpg" alt="JavaStoryDevelop" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill9040" title="JavaStoryDevelop" class="overflowclass">JavaStoryDevelop</a> <p class="overflowclass">你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在</p> </div> <a rel="nofollow" href="/xiazai/skill9040" title="JavaStoryDevelop" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div>
- 行号
i和该行符号数量一致 → 用i作内层上限最自然 - 起始为 0 时,常见错误是写成
j ,导致第 0 行打 1 个、第 1 行打 2 个……整体下移一行 - 新手调试时习惯用“这是第几行”来验证,从 1 开始和肉眼观察完全对应
想打印数字直角三角形,print(j) 为什么结果不对齐
数字位数不同(比如 1 占 1 字符,10 占 2 字符),纯靠 print() 无法自动对齐,视觉上就不是“直角三角形”,而是右倾的梯形。
- 简单补空格不通用:两位数要补、三位数还要改,维护麻烦
- 推荐用
System.out.printf("%2d", j)固定宽度,但要注意%2d是右对齐,左边补空格 - 如果要求左对齐,得写成
%-2d;全用String.format()拼接再 print 也行,但性能略低
for (int i = 1; i <h3>嵌套循环性能真有问题吗?100 行以内完全不用优化</h3> <p>双层循环时间复杂度是 O(n²),但 Java 在现代机器上跑 100 行(共约 5000 次迭代)几乎感觉不到延迟。真正卡顿往往来自 I/O——也就是频繁调用 <code>System.out.print()</code>。</p>
- 每调用一次
print()都涉及底层输出缓冲区操作,100 行三角形会触发上千次 - 实际提速方法:用
StringBuilder拼好整行再println(),或直接用System.out.write()写字节数组 - 但除非你是在生成万行图案或高频调用,否则优先保证可读性,别过早优化
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










