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
相关产品推荐
相关产品推荐

