为何使用JavaScript/NodeJS的while循环无法正确打印左对齐星号图案?
问题分析与解决
你的代码问题出在**j变量没有在外层循环的每次迭代中重置为0**:
原代码里j是在循环外声明的,第一次外层循环结束后j的值会保留。后续每次外层循环时,j的起始值是上一次循环结束后的结果,导致内层循环只执行1次,无法生成对应行数的星号。
修正后的代码
写法一:将j的声明移到外层循环内部
let n = 5, i = 1; let str = ""; while (i <= n) { let j = 0; // 每次外层循环都重置j为0 while (j < i) { j++; str += "*"; } i++; str += "\n"; } console.log(str);
写法二:在外层循环开始时重置j的值
let n = 5, i = 1, j = 0; let str = ""; while (i <= n) { j = 0; // 每次外层循环重置j为0 while (j < i) { j++; str += "*"; } i++; str += "\n"; } console.log(str);
原理说明
重置j后,每次外层循环都会从j=0开始计数,内层循环会完整执行i次,从而为第i行生成i个星号,最终得到你期望的左对齐图案。
内容的提问来源于stack exchange,提问作者jae
相关产品推荐
相关产品推荐

