PL/SQL问题:无法输出能被2和3整除的前20个数,输出大量0求修正
PL/SQL代码修改方案:打印前20个同时被2和3整除的数
原代码存在两个核心问题:
- 变量
n在循环体内没有递增操作,导致程序陷入死循环,持续输出初始值0 - 循环条件
n <= 40无法精准控制输出前20个符合要求的数,范围限制不合理
以下是修正后的代码:
SET SERVEROUTPUT ON; DECLARE n number := 0; count_num number := 0; -- 新增计数器,记录已输出的符合条件的数字个数 BEGIN -- 循环条件改为计数器小于20,确保只输出前20个目标数 WHILE count_num < 20 LOOP -- 同时被2和3整除等价于被6整除 IF MOD(n, 6) = 0 AND n != 0 THEN -- 可选:如果不需要输出0,加上n!=0的判断 DBMS_OUTPUT.PUT_LINE(n); count_num := count_num + 1; -- 输出后计数器加1 END IF; n := n + 1; -- 每次循环n递增,避免死循环 END LOOP; END; /
关键改动说明:
- 添加
count_num计数器,用来追踪已输出的符合条件的数字数量,确保只输出前20个 - 循环条件改为
count_num < 20,替代原有的范围限制,逻辑更准确 - 在循环末尾增加
n := n + 1,让变量n持续递增,避免死循环 - 可选增加
n != 0的判断:如果不需要将0纳入结果(0虽然能被2和3整除,但通常这类需求从正整数开始),可以保留这个条件;如果需要包含0,去掉即可
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

