
本文详解如何使用 java 的嵌套 for 循环(或现代 string.repeat() 方法)生成指定结构的 5 行方阵:每行前半部分为递增的星号(*),后半部分为递减的加号(+),最终呈现左下三角星+右上三角加的拼接效果。
本文详解如何使用 java 的嵌套 for 循环(或现代 string.repeat() 方法)生成指定结构的 5 行方阵:每行前半部分为递增的星号(*),后半部分为递减的加号(+),最终呈现左下三角星+右上三角加的拼接效果。
要实现如下目标图案:
+ + + + + * + + + + * * + + + * * * + + * * * * +
关键在于理解每行的构成规律:第 i 行(从 0 开始计数)包含 i 个 "* ",后跟 5 - i 个 "+ "。你原先的代码只打印了星号部分,遗漏了加号填充逻辑。
✅ 方案一:传统嵌套 for 循环(兼容 Java 5+)
int lineLength = 5;
for (int i = 0; i < lineLength; i++) {
// 打印 i 个 "* "
for (int j = 0; j < i; j++) {
System.out.print("* ");
}
// 打印 (5 - i) 个 "+ "
for (int j = 0; j < lineLength - i; j++) {
System.out.print("+ ");
}
System.out.println(); // 换行
}该方案清晰体现双重循环分工:内层两个独立循环分别控制星号与加号的输出数量,逻辑直观,适合初学者理解循环变量与行结构的关系。
✅ 方案二:简洁现代写法(Java 11+)
利用 String.repeat(int) 方法可大幅简化代码,提升可读性与维护性:
立即学习“Java免费学习笔记(深入)”;
int lineLength = 5;
for (int i = 0; i < lineLength; i++) {
System.out.println("* ".repeat(i) + "+ ".repeat(lineLength - i));
}⚠️ 注意:String.repeat() 自 Java 11 起引入。若项目运行在 Java 8 或更早版本,请使用方案一,或自行封装重复字符串工具方法。
? 补充说明与调试建议
- 索引起点:本例采用 i 从 0 开始,因此第 0 行为 0 个 * + 5 个 +,符合首行全加号的要求;
- 空格处理:每个符号后带空格("* " 和 "+ "),确保输出对齐美观;若需严格对齐(如末尾不带空格),可改用 String.join(" ", Collections.nCopies(n, symbol)),但本题无需过度复杂化;
- 可扩展性:将 lineLength 提取为变量,便于快速切换为 4 行、6 行等任意尺寸方阵;
- 常见错误:避免在内层循环中混用 println() 导致过早换行;所有符号应在同一行内 print() 完成后再调用 println()。
掌握这种“分段构造 + 循环计数”的思路,不仅能解决本题,也为后续学习杨辉三角、菱形打印、矩阵填充等经典模式打下坚实基础。



















