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

PL/SQL打印指定星号图案问题:输出结果与预期不符

PL/SQL星号图案输出异常修复

预期输出

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

实际错误输出

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

问题分析

从输出差异看,第一行的前置空格完全缺失,核心原因是控制前置空格的循环逻辑错误。比如原脚本可能在计算空格数量时,循环起始值或终止条件写错,导致第一行没有生成足够的空格。

修正后的PL/SQL代码

DECLARE
    total_rows NUMBER := 5;
BEGIN
    -- 外层循环控制总行数
    FOR current_row IN 1..total_rows LOOP
        -- 打印前置空格:每行空格数 = 总行数 - 当前行号
        FOR space_count IN 1..(total_rows - current_row) LOOP
            DBMS_OUTPUT.PUT(' ');
        END LOOP;
        -- 打印星号(每个星号后带空格)
        FOR star_count IN 1..current_row LOOP
            DBMS_OUTPUT.PUT('* ');
        END LOOP;
        -- 换行
        DBMS_OUTPUT.NEW_LINE;
    END LOOP;
END;
/

代码说明

  1. 定义total_rows指定总打印行数(这里是5);
  2. 外层循环current_row从1到5,遍历每一行;
  3. 第一个内层循环生成total_rows - current_row个空格:比如第1行时,5-1=4个空格,完美匹配预期格式;
  4. 第二个内层循环生成current_row个带空格的星号,保证每行的星号数量正确;
  5. 每行星号打印完成后调用NEW_LINE换行。

执行这段代码就能得到你想要的右对齐星号图案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:35:18