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

