本文详解如何通过条件判断优化system.out.println()调用,精准控制上下两个对称三角形之间的换行逻辑,彻底消除中间多余的两行空白。
在打印由星号(*)构成的对称三角形图案时,一个常见问题是:上半部

关键在于:并非每次内层循环结束后都需要换行。我们需要对“是否该换行”施加逻辑约束:
以下是优化后的完整示例代码(已采用语义化命名与 0 起始索引,提升可读性与工程规范性):
public class StarPattern {
public static void main(String[] args) {
printSymmetricTriangles(4);
}
private static void printSymmetricTriangles(int rows) {
// 上半部分:倒三角(含 rows 行,从满行递减)
for (int row = rows; row > 0; row--) {
for (int col = 0; col < row; col++) {
System.out.print(" * ");
}
if (row > 1) { // 关键:最后一行(row == 1)不换行
System.out.println();
}
}
// 下半部分:正三角(从 1 行递增至 rows 行)
for (int row = 0; row <= rows; row++) {
for (int col = 0; col < row; col++) {
System.out.print(" * ");
}
if (row < rows) { // 关键:最大行(row == rows)后不换行
System.out.println();
}
}
}
}输出结果(输入 rows = 4):
* * * * * * * * * * * * * * * * * * * *
✅ 注意事项总结:
通过这种精细化的换行控制,你不仅能解决当前的双空行问题,更能建立起对输出流行为的深层理解,为复杂格式化输出打下坚实基础。