如何用嵌套循环在Java中打印斜向菱形图案(Slanting Rhombus)

本文详解如何通过修正空格控制逻辑,使用双重for循环在java中正确输出斜向菱形图案——关键在于让每行星号前的空格数随行号动态递减,而非固定不变。

要打印一个斜向菱形(Slanting Rhombus),其典型特征是:整体呈右上倾斜的平行四边形轮廓(非对称菱形),由 n 行组成,每行含 n 个 *,且第 i 行前需打印 n−i 个空格,使星号逐行左移,形成向右上方“倾斜”的视觉效果。

原始代码的问题在于空格循环写成了 j 每行都输出 n−1 个空格,所有 * 列严格对齐,最终呈现为垂直堆叠的矩形,而非斜向结构。

✅ 正确逻辑应为:

  • 第 1 行(i = 1):n−1 个空格 → * 靠右
  • 第 2 行(i = 2):n−2 个空格 → * 左移 1 位
  • 第 n 行(i = n):0 个空格 → * 顶格左对齐

以下是修复后的完整可运行代码:

public class SlantingRhombus {
    public static void rhombus(int n) {
        for (int i = 1; i <= n; i++) {
            // 打印前导空格:随行号增加而减少
            for (int j = 1; j <= n - i; j++) {
                System.out.print(" ");
            }
            // 打印 n 个星号
            for (int j = 1; j <= n; j++) {
                System.

out.print("*"); } System.out.println(); // 换行 } } public static void main(String[] args) { rhombus(5); } }

输出效果(n = 5):

    *****
   *****
  *****
 *****
*****

? 关键注意点:

  • 空格数量必须与 i 关联(即 n - i),不可硬编码为常量;
  • 星号数量保持恒定(n 个),不随行变化,这是“斜向菱形”区别于传统上下对称菱形的核心特征;
  • 若需扩展为完整菱形(含下半部分),需额外添加递减段(i 从 n−1 到 1),但本题仅要求单向斜向结构;
  • 实际开发中建议将 System.out.print() 替换为字符串构建 + System.out.println(),提升性能与可测试性。

掌握这一空格动态计算思想,是理解图形类循环编程的基础,适用于三角形、梯形、锯齿阵列等多种模式生成场景。