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

JavaScript打印星号三角形时输出末尾多余空行如何解决

问题根因

最后多出的空行来自循环逻辑的冗余处理:每完成一行星号拼接你就追加一个\n换行符,当循环执行到最后一行时,依然会在末尾多拼一个换行符,最终打印时就会在三角形最后一行下方多出一个空白行。

可行修复方案

你可以根据自己的代码习惯选任意一种:

  • 条件判断加换行
    仅在当前遍历的不是最后一行时,才追加换行符,从根源上避免末尾多拼接换行,修改后代码如下:
function drawTriangle(size) {
   let string = "";    // 声明存储输出内容的字符串变量
   for (let i = 1; i <= size; i++) {  // 外层循环控制行数,遍历到输入的size值为止
       for (let j = 0; j < i; j++) {  // 内层循环控制当前行的星号数量
         string += "*";   // 逐颗拼接当前行星号
       }
       // 非最后一行才追加换行
       if (i !== size) {
         string += "\n";
       }
     }
     console.log(string);  // 打印最终拼接的三角形
}
  • 输出前移除末尾冗余换行
    不用调整原有循环逻辑,在打印前调用字符串的trimEnd()方法,直接清除字符串末尾多余的换行、空白字符即可:
function drawTriangle(size) {
   let string = "";
   for (let i = 1; i <= size; i++) {
       for (let j = 0; j < i; j++) {
         string += "*";
       }
       string += "\n";
     }
     // 清除末尾多余空白后再打印
     console.log(string.trimEnd());
}
  • 数组拼接法(更简洁)
    把每一行的星号作为单独元素存入数组,最后用换行符作为分隔符拼接数组,join方法只会在数组元素之间插入分隔符,不会在末尾额外添加,从逻辑上避免多余换行:
function drawTriangle(size) {
  const lines = [];
  for (let i = 1; i <= size; i++) {
    // 直接用repeat方法生成对应数量的星号,省掉内层循环
    lines.push("*".repeat(i));
  }
  console.log(lines.join("\n"));
}

内容的提问来源于stack exchange,提问作者Nitron

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:42:15