JavaScript嵌套循环打印逐行递增数字三角形问题求解
JavaScript嵌套循环打印数字三角形问题修复
需求说明
实现逻辑:接收用户输入的数字,基于输入值生成对应数字三角形,以输入数字5为例,预期输出效果如下:
5 6 6 7 7 7 8 8 8 8 9 9 9 9 9 10 10 10 10 10
规则要求:
- 每一行打印的数值相较上一行递增1
- 每行的数字个数与当前行号相等
现有问题:代码运行后所有行都重复打印初始输入的数字,无法实现数值逐行递增的效果。
原有问题代码
let num = prompt("Enter a number"); //Check if its a number num = parseInt(num); //loop 1 for (i = 1; i <= 6; i++) { //loop 2 for (y = 0; y < i; y++) { document.write(num); } document.write(num = num +1; "<br>"); }
<p id="num"> </p>
错误原因
document.write(num = num +1; "<br>")存在语法错误,函数参数内不能用分号直接分隔多条独立语句,这行代码运行时会直接抛出语法错误,导致num自增逻辑完全不执行,所有内层循环读取到的始终是用户最初输入的数值- 内层循环打印数字时没有追加间隔空格,同行多个数字会直接连在一起,无法区分单个数字
- 循环变量
i、y未做变量声明,会默认成为全局变量,容易和其他脚本逻辑产生冲突
修正后代码
let num = prompt("Enter a number"); num = parseInt(num); // 补充输入合法性校验 if (isNaN(num)) { document.write("请输入有效数字"); } else { // 外层循环控制行数,总共输出6行 for (let i = 1; i <= 6; i++) { // 内层循环控制当前行打印的数字个数,个数等于当前行号i for (let y = 0; y < i; y++) { // 打印数字后追加空格,避免数字粘连 document.write(num + " "); } // 打印完当前行所有数字后追加换行 document.write("<br>"); // 当前行打印完成后再给num自增,供下一行使用 num = num + 1; } }
<p id="num"> </p>
效果验证
输入数字5时,运行代码即可输出和预期完全一致的数字三角形:第一行1个5,第二行2个6,逐行递增到第六行6个10。
内容的提问来源于stack exchange,提问作者lostgirl
相关产品推荐
相关产品推荐

