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

JavaScript循环中如何存储用户输入的不同数值以实现数据统计?

JavaScript 分数统计程序修复方案

原代码存在的问题

  • 未初始化变量i,执行时会触发引用错误
  • 仅用单个变量pointsCount存储输入值,无法保留所有分数,导致Math.min()和Math.max()只能获取最后一次输入的值,无法计算正确的极值
  • 输入-1退出时,会将-1计入总分和统计,不符合需求
  • 结果弹窗中的换行符错误,应该用\n而非/n
  • points变量赋值无意义(alert()函数返回undefined)

修正后的代码

// 初始化变量
let gameNum = 1;
const scores = [];
let totalPoints = 0;
let input;

alert("请在弹出的输入框中输入玩家的分数,输入-1结束");

do {
  input = Number(prompt(`请输入第 ${gameNum} 局的分数:`));
  // 排除退出值-1,同时过滤非数字输入
  if (input !== -1 && !isNaN(input)) {
    scores.push(input);
    totalPoints += input;
    gameNum++;
  }
} while (input !== -1);

// 计算统计值
const minPoints = scores.length ? Math.min(...scores) : 0;
const maxPoints = scores.length ? Math.max(...scores) : 0;
const averagePoints = scores.length ? (totalPoints / scores.length).toFixed(2) : 0;

// 输出结果
alert(`*** 玩家统计数据 ***
最小分数:${minPoints}
最大分数:${maxPoints}
平均分数:${averagePoints}
总分数:${totalPoints}`);

关键改动说明

  • 使用数组scores存储所有有效输入的分数,完整保留数据用于极值计算
  • 增加输入校验:过滤非数字输入,输入-1时直接退出循环,不将其计入统计
  • 初始化所有变量,避免未定义错误
  • 使用扩展运算符...将数组元素传入Math.min()和Math.max(),实现正确的极值计算
  • 修复弹窗换行符,优化输出格式
  • 处理无有效输入的边界情况,避免除以0错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:40:31