本文详解如何通过条件控制 `system.out.println()` 的执行时机,精准消除上下两个倒正三角形之间多余的两行空白,同时提供命名规范、索引优化等专业编码建议。
在 Java 控制台输出图形时,System.out.println() 每次调用都会换行(即插入一个 \n)。观察原始代码:两个嵌套 for 循环末尾无条件调用 System.out.println(),导致每个三角形的最后一行后仍额外输出一次换行——上三角末尾多出一行,下三角开头又多出一行,合计形成两行空白间隙。
解决核心在于:仅在需要换行时才调用 println(),跳过“最后一行之后”的冗余换行。
以下为优化后的完整实现(已重构为清晰、可维护的结构):
public class TrianglePrinter {
public static void main(String[] args) {
printHourglassPattern(4);
}
private static void printHourglassPattern(int rows) {
// 上半部分:倒三角(从 rows 行递减到 1 行)
for (int row = rows; row >= 1; row--) {
for (int col = 0; col < row; col++) {
System.out.print(" * ");
}
if (row > 1) { // 最后一行(row == 1)不换行,避免多余空行
System.out.println();
}
}
// 下半部分:正三角(从 1 行递增到 rows 行)
for (int row = 1; row <= rows; row++) {
for (int col = 0; col < row; col++) {
System.out.print(" * ");
}
if (row < rows) { // 最后一行(row == rows)不换行,衔接紧密
System.out.println();
}
}
// 注意:此处无需额外 println() —— 整体输出自然结束
}
}✅ 关键改进说明:
⚠️ 注意事项:
运行结果(rows = 4):
* * * * * * * * * * * * * * * * * * * *
可见中间仅保留一行分隔空行(由上三角末行后无换行 + 下三角首行前无换行自然形成),彻底消除原始问题中的两
