You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Processing中绘制可调整尺寸的菱形图形问题求助

修复可调整尺寸的菱形绘制代码

问题分析

你的代码核心问题出在菱形下半部分的绘制逻辑:

  • 空格循环的条件错误:for(int j = i; j >= 1-i; j--)完全不符合居中对齐的空格计算逻辑,导致空格数量混乱。
  • 下半部分循环起始值错误:从i = ancho开始会重复绘制菱形中间的最长行,最终图形会有重复的中线。

修正后的代码

void dibujaRombo(int ancho) {
  // 绘制上半部分(含中间最长行)
  for(int i = 1; i <= ancho; i++){
    // 打印前置空格
    for(int j = 1; j <= ancho - i; j++){
      print(" ");
    }
    // 打印星号
    for(int k = 0; k < 2*i - 1; k++){
      print("*");
    }
    println();
  }
  
  // 绘制下半部分(从中间行的上一行开始,避免重复)
  for(int i = ancho - 1; i >= 1; i--){
    // 复用上半部分的空格逻辑,保证居中
    for(int j = 1; j <= ancho - i; j++){
      print(" ");
    }
    // 打印对应数量的星号
    for(int k = 0; k < 2*i - 1; k++){
      print("*");
    }
    println();
  }
}

void setup(){
  dibujaRombo(6);
}

关键修正说明

  1. 调整下半部分循环起始值:将i = ancho改为i = ancho - 1,避免重复绘制菱形的中间最长行。
  2. 统一空格计算逻辑:下半部分的空格循环和上半部分保持一致,确保每行星号都能居中对齐,符合菱形的对称结构。
  3. 函数名优化:将原函数名dibujaPiramide(金字塔绘制)改为dibujaRombo(菱形绘制),更贴合功能语义。

测试输出(输入参数为6时)

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

内容的提问来源于stack exchange,提问作者Danny Belloli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 17:05:12