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; /
代码说明
- 定义
total_rows指定总打印行数(这里是5); - 外层循环
current_row从1到5,遍历每一行; - 第一个内层循环生成
total_rows - current_row个空格:比如第1行时,5-1=4个空格,完美匹配预期格式; - 第二个内层循环生成
current_row个带空格的星号,保证每行的星号数量正确; - 每行星号打印完成后调用
NEW_LINE换行。
执行这段代码就能得到你想要的右对齐星号图案。
内容的提问来源于stack exchange,提问作者ichbinaqil
相关产品推荐
相关产品推荐

