
本文介绍在 Java 中打印实心菱形上半部分(逐行递减前导空格、固定星号数)的多种 for 循环实现方式,重点对比传统嵌套循环与 Java 11+ String.repeat() 的简洁写法,并分析其适用性与注意事项。
本文介绍在 java 中打印实心菱形上半部分(逐行递减前导空格、固定星号数)的多种 for 循环实现方式,重点对比传统嵌套循环与 java 11+ `string.repeat()` 的简洁写法,并分析其适用性与注意事项。
要打印如下结构的实心菱形上半部分(共 5 行,每行 5 个 *,前导空格从 5 个递减至 1 个):
*****
*****
*****
*****
*****
最直观的方法是使用三层嵌套 for 循环:外层控制行数,内层分别打印空格和星号。但正如提问中所示,这种写法语句较多、可读性一般,且易出错(例如原代码中 m-i+1 的逻辑易混淆边界)。
✅ 推荐方案(Java 11+):利用 String.repeat() 实现单层 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(int)是 Java 11 引入的 API,若项目运行在 Java 8 或更低版本,需升级 JDK 或改用兼容写法(如StringBuilder循环拼接)。
Java注释规范Skills下载当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
❌ 不推荐的“伪简化”陷阱
有人尝试用 System.out.printf("%" + (i+5) + "s", "*****") 等格式化方式,但会因动态宽度计算复杂、易错,且丧失可读性,反而违背“简洁”初衷。
? 关键总结:
- ✅ 单层
for+String.repeat()是目前最简洁、安全、可维护的实现; - ✅ 时间复杂度仍为 O(n²)(因输出字符总量为 O(n²)),但常数因子更优;
- ✅ 若需兼容旧版 Java,可用工具方法封装重复逻辑(如下示例):
static String repeat(char c, int count) {
return new String(new char[count]).replace('\0', c);
}
// 调用:System.out.println(repeat(' ', i) + repeat('*', n));
无论采用哪种方式,核心思想不变:将“空格数量”与“星号数量”解耦处理,避免在循环中混合控制逻辑——这是写出清晰模式打印代码的关键原则。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











