如何存储用户输入的所有数值,输入0时展示全部输入、总和及平均值
需求与现有代码
需求
让用户每次输入一个数字,直到输入0时,输出以下内容:
- 之前所有输入的数值(逐行打印)
- 所有输入值的总和
- 所有输入值的平均值
现有代码
let i = -1; let total = 0; let numPrompt; do { numPrompt = prompt("") total += parseInt(numPrompt) i++; } while (numPrompt != '0'); // do-while loop let avg = total/i; console.log(total) console.log(avg)
当前问题
现有代码仅能计算并输出总和与平均值,无法保存并打印所有历史输入值。
修改后的代码
let total = 0; let numPrompt; const inputs = []; // 存储所有有效输入值 do { numPrompt = prompt("请输入数字(输入0结束)"); const num = parseInt(numPrompt); // 仅处理非0的有效数字输入 if (num !== 0 && !isNaN(num)) { inputs.push(num); total += num; } } while (numPrompt !== '0'); // 逐行打印所有输入值 console.log("您输入的所有数字:"); inputs.forEach(num => { console.log(num); }); // 计算并打印总和与平均值 const avg = inputs.length > 0 ? total / inputs.length : 0; console.log(`总和:${total}`); console.log(`平均值:${avg}`);
关键修改说明
- 用数组存储输入记录:新增
inputs数组保存用户输入的有效数字,避免丢失历史输入。 - 优化输入判断逻辑:添加
!isNaN(num)过滤非数字输入,仅在输入不是0时才累加和存储,无需通过i=-1修正计数,直接用inputs.length获取有效输入数量,逻辑更直观。 - 逐行打印输入值:通过
forEach遍历数组,逐行输出每个输入的数字。 - 边界情况处理:当用户直接输入0时,平均值设为0,避免出现除以0的错误。
内容的提问来源于stack exchange,提问作者user20423412
相关产品推荐
相关产品推荐

