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

为何使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:55:18