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

如何在while循环程序中排除-1并终止,计算输入数字平均值

问题解决:排除-1并正确终止程序计算平均值

原代码存在变量作用域冲突、-1被错误加入数组、平均值计算时机错误等核心问题,以下是修正后的代码及说明:

修正后的代码

let inputNum = 0;
const numArray = [];

while (inputNum !== -1) {
  inputNum = prompt("请输入一个数字,输入-1以停止");
  const parsedNum = Number(inputNum);
  
  // 仅将非-1的有效数字加入数组
  if (parsedNum !== -1 && !isNaN(parsedNum)) {
    numArray.push(parsedNum);
  }

  // 输入-1时直接终止循环
  if (parsedNum === -1) {
    break;
  }
}

// 循环结束后计算并输出平均值,处理空数组情况
if (numArray.length > 0) {
  const total = numArray.reduce((acc, curr) => acc + curr, 0);
  const average = total / numArray.length;
  console.log(`平均值为: ${average}`);
} else {
  console.log("未输入任何有效数字");
}

关键改动说明

  • 修复变量作用域:原循环内重复声明Num,导致while条件始终判断外部初始值,无法正确终止。现在统一使用外部变量inputNum,保证判断逻辑一致。
  • 排除-1加入数组:在将数字推入数组前,先判断转换后的数字是否为-1,只有非-1的有效数字才会被存入数组,同时用!isNaN(parsedNum)过滤非数字输入。
  • 正确终止循环:当检测到输入转换后为-1时,用break直接退出循环,避免后续无效操作。
  • 调整平均值计算时机:将平均值计算移到循环外部,仅在输入结束后执行一次,同时增加空数组判断,防止出现除以0的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:20:24