
本文介绍在 java 中使用单层 for 循环配合 string::repeat 方法高效打印实心菱形上半部分(右对齐星号列),替代传统嵌套循环,代码更简短、可读性更强,适用于 java 11+ 环境。
本文介绍在 java 中使用单层 for 循环配合 string::repeat 方法高效打印实心菱形上半部分(右对齐星号列),替代传统嵌套循环,代码更简短、可读性更强,适用于 java 11+ 环境。
在 Java 图案打印练习中,实心菱形(Solid Rhombus)常被拆解为上下两部分实现。你提供的示例实际绘制的是菱形的上半部分(含中心行)——即逐行减少前导空格、保持星号数量恒定(5个)的右对齐星号列。虽然嵌套 for 循环是初学阶段的标准解法,但自 Java 11 起,String.repeat(int) 方法为字符串重复提供了原生支持,可大幅简化逻辑。
以下是一种更简洁、仅需单层 for 循环的实现方式:
public class SolidRhombus {
public static void main(String[] args) {
int n = 5;
for (int i = n; i >= 1; i--) {
System.out.println(" ".repeat(i) + "*".repeat(n));
}
}
}
✅ 输出效果(与题目要求完全一致):
*****
*****
*****
*****
*****
⚠️ 注意事项:
String.repeat()是 Java 11 引入的 API,若项目运行在 Java 8–10 环境,需降级为new String(new char[i]).replace('\0', ' ')或封装工具方法;- 此写法虽代码量少、语义清晰,但底层仍涉及字符串构建与拼接,对超大尺寸(如 n > 10⁴)可能存在性能开销,教学或小规模图案场景下推荐使用;
- 若需完整菱形(含下半部分),可在上述循环后追加反向递减循环(i 从 2 到 n),或统一用
Math.abs()控制空格数。
总结:善用现代 Java 特性(如 repeat)不仅能减少嵌套层级、提升代码可读性,也体现了从“过程式思维”向“声明式表达”的进阶。掌握多种实现方式,有助于在不同约束条件下选择最优解。










