JavaScript接收prompt输入存入数组并计算排除-1的数值平均值
问题排查
- 数组初始化时机错误:你在循环结束后才创建
numbersArray,仅保存了终止标记-1,循环过程中用户输入的所有数字都没有被存储,直接丢失。 - 缺少类型转换:
prompt返回值为字符串格式,后续做数值计算需要先转成数字类型才能正确运算。 - 未排除终止标记:现有逻辑会把停止输入的标记
-1也纳入计算范围,不符合需求要求。
修正后代码
// 初始化存储有效数字的空数组 const numbersArray = []; let userInput = prompt("请输入数字,输入-1时停止输入"); while (userInput !== "-1") { const inputNum = Number(userInput); // 仅存入有效数字,过滤非数字输入 if (!isNaN(inputNum)) { numbersArray.push(inputNum); } else { alert("请输入合法数字"); } // 触发下一次输入 userInput = prompt("请输入数字,输入-1时停止输入"); } // 计算平均值 if (numbersArray.length) { const total = numbersArray.reduce((prev, curr) => prev + curr, 0); const average = total / numbersArray.length; console.log("已输入有效数字:", numbersArray); console.log("平均值为:", average); // 如需保留小数可改用 average.toFixed(2) 保留2位小数 } else { console.log("未输入任何有效数字,无法计算平均值"); }
逻辑说明
- 循环开始前就初始化空数组,每次用户输入有效数字后就存入数组,避免数据丢失
- 每次输入首先判断是否为终止标记
-1,非标记值才做后续处理,自动排除终止标记 - 新增非数字输入容错逻辑,避免无效值干扰计算结果
- 增加空数组判断,避免未输入任何数字时出现除以0的报错
内容的提问来源于stack exchange,提问作者Sierszo
相关产品推荐
相关产品推荐

